我已经阅读了所有的地方,我试图弄清楚我是否理解了Drupal6中缓存的方式。我们有一个网站,里面有一个实时的股票报价器。我们启用了Drupal缓存,因此股票价格最终会在特定的位置被缓存和冻结。我想我可以处理它的一种方法是将滚动条放在我在自定义模块中创建的块中并设置BLOCK_NO_CACHE,但是如果我理解正确的话,如果您启用了站点缓存,那么整个页面都会被缓存,包括其中的任何和所有块,而不管它们各自的缓存设置。这是正确的吗?那么,如果我有一些不应该缓存的点,我就不能利用站点缓存了吗?有没有人知道另一种解决方案,我可以用来兼得两个世界的最好?能够有站点缓存,还能有一个实时的股票报价器?顺便说一句,股票报价器正在向Yahoo finance API发出一个JSON请求,以获取报价。
发布于 2013-04-05 06:42:13
您是对的,BLOCK_NO_CACHE指令仅适用于块级。但是,当启用页面缓存时,Drupal将缓存整个页面(也包括块)。但这只适用于匿名用户。Drupal的理念是,匿名用户的内容总是相同的,所以他们得到的是缓存页面。但这不适用于经过身份验证的用户。因为不同的用户可能对页面的某些部分有不同的访问权限(例如,链接块对于管理员和普通用户看起来是不同的)。
您可能想看看下面的讨论:BLOCK_NO_CACHE not working for anonymous users
这里有一个解决方案,你会在这个讨论中偶然发现。它是这个模块:Ajax Blocks。摘自模块描述:
当匿名用户查看页面时,
允许在加载整个缓存页面后,通过额外的AJAX请求加载一些块。它适用于大多数是静态的站点,匿名用户的页面缓存是一个很大的好处,但也有一些信息必须是动态的。
https://stackoverflow.com/questions/15819185
复制相似问题