我们的drupal站点有一些特定于用户的内容。当我们启用页面缓存时,整个页面都会被缓存。难道不可以只缓存页面的片段吗?或者指定哪些片段不缓存?或者甚至指定不缓存哪些页面。通过这种方式,我们可以在登录时从缓存中删除一些内容。或者在登录时不要使用缓存的版本。
我已经找到了这个网站,但它似乎不起作用:http://www.jpstacey.info/blog/2009/03/03/how-to-not-cache-a-particular-drupal-page
但这似乎行不通。
致以亲切的问候,达安
发布于 2010-11-17 23:01:27
首先,我第二次运行Bar-Ziks的建议,将“不被缓存”的数据放在一个单独的块中,并将该块设置为BLOCK_NO_CACHE
,因为这是最简单的解决方案。
如果这是不可能的,您可以禁用特定页面的缓存,但与您发布的链接中的建议相反,我会通过在一开始就阻止页面被缓存来实现这一点(而不是在以后删除缓存条目)。
为此,您可以临时在相关页面上操作全局缓存配置设置:
// Disable caching for this request cycle
$GLOBALS['conf']['cache'] = FALSE;
您放置此代码的位置取决于您希望从缓存中排除的页面:
如果它是来自你自己模块的自定义节点类型,你可以把它放在hook_view
.
hook_nodeapi()
实现的‘’操作部分中。**这也适用于单个节点,如果您在禁用缓存之前添加了对节点id的检查。hook_init()
实现中,检查路径(或路径别名)以决定是否禁用缓存。显然,您需要首先清除缓存,以便这些方法中的任何一种都能工作,因为它们依赖于阻止页面被缓存。它们不会从缓存中删除已经分页的条目。
发布于 2010-11-17 16:37:35
您可以将不想缓存的数据放在块中,并使用BLOCK_NO_CACHE防止该块缓存。这是一件非常简单的事情,并且用drupal.api解释:http://api.drupal.org/api/drupal/modules--block--block.module/constant/BLOCK_NO_CACHE/6
发布于 2010-11-18 05:39:42
是!例如,默认情况下,Drupal缓存菜单。这通常出现在每一页上。
请参阅缓存的getter和setter(如下)。您可以通过设置唯一的缓存ID来创建自己的缓存ID。
http://api.drupal.org/api/drupal/includes--cache.inc/function/cache_get
http://api.drupal.org/api/drupal/includes--cache.inc/function/cache_set
https://stackoverflow.com/questions/4205981
复制相似问题