0

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

4

1 回答 1

1

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

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

还有一个解决方案,你会偶然发现这个讨论。就是这个模块:Ajax Blocks。从模块描述中提取:

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

于 2013-04-04T22:42:12.963 回答