【问题标题】:Drupal 6 caching and blocksDrupal 6 缓存和块
【发布时间】:2013-04-04 18:42:50
【问题描述】:

我已经阅读了所有内容,并且试图弄清楚我是否理解 Drupal 6 中缓存的发生方式。我们有一个网站,其中包含实时股票行情。我们启用了 Drupal 缓存,因此股票价格最终会被缓存并冻结在特定位置。我想出了一种可以处理它的方法是将代码放在我在自定义模块中创建的块中并设置 BLOCK_NO_CACHE,但是如果我理解正确,如果您启用了站点缓存,那么整个页面都会被缓存,包括无论其各自的缓存设置如何,它上面的任何和所有块。这个对吗?那么,如果我有某些不应该缓存的点,我是否无法利用站点缓存?有谁知道我可以用来两全其美的另一种解决方案?能够有网站缓存,但也有一个实时股票行情?顺便说一句,股票行情正在向 Yahoo Finance API 发出 JSON 请求以获取报价。

【问题讨论】:

  • 也许我遗漏了一些东西,但是如果您的股票代码正在向 Yahoo 发送请求,这会发生在用户浏览器和 Yahoo API 服务器之间。在这种情况下,Drupal 没有要缓存的内容,您的问题可能在其他地方......
  • 对不起,帕马特,我不清楚。它实际上是通过 PHP 使用 page.tpl.php 文件中的 file_get_contents() 完成的,但你是对的,如果我将它移动到可能使用 jQuery 并进行 .ajax 调用,这可能不会受到缓存的影响。我会测试一下。

标签: caching drupal drupal-6 drupal-blocks


【解决方案1】:

你是对的,指令BLOCK_NO_CACHE 只适用于块级。但是,当启用页面缓存时,Drupal 将缓存整个页面(也包括块)。但这仅适用于匿名用户。 Drupal 的理念是匿名用户的内容总是相同的,因此他们得到缓存页面。但这不适用于经过身份验证的用户。因为不同的用户可能对页面的某些部分有不同的访问权限(例如,对于管理员来说,链接块看起来与普通用户不同)。

你可能想看看这个讨论:BLOCK_NO_CACHE not working for anonymous users

还有一个解决方案,您会偶然发现这个讨论。就是这个模块:Ajax Blocks。模块描述摘录:

允许在加载后通过额外的 AJAX 请求加载一些块 匿名用户查看页面时的整个缓存页面。这是 适用于大部分是静态的网站,以及页面缓存 匿名用户是一个很大的好处,但也有一些 必须是动态的信息。

【讨论】:

  • 太棒了,听起来很完美。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多