如何检查当前页面上的缓存是否正常工作?


9

一些模块以静默方式关闭某些页面上的缓存。如何最简单的方法来检查这种情况并确定有问题的模块?


使用Boost缓存很简单,页面底部有一个html注释。与其他缓存比较有趣。
Mołot

@Mołot我主要对标准Drupal缓存感兴趣,但是对其他缓存的说明也非常感谢。
user11153 2013年

Answers:


13

最简单的方法可能是检查HTTP响应标头。

例如,使用您的浏览器DOM检查器工具(例如Chrome的“网络”标签

快取小姐

这是来自drupal.org的一些示例响应头,显示了高速缓存未命中。在这种情况下,使用Varnish但是核心Drupal缓存也会设置类似的标头。

缓存未命中的HTTP标头

缓存命中

这是显示标准Drupal缓存命中的一个:

缓存命中http标头


但是Drupal.org落后于Varnish,不是吗?我无法在直接访问的Drupal上看到X-Cache标头。还是如果我正在测试的页面可缓存?
Mołot

@Mołot如果我注销了,可以看到Varnish标头。
Letharion

对于我的Drupal 7网站,我确实看到了标头,X-Drupal-Cache: HIT但是在我的Drupal 6网站上,我什么都没有看到。可以通过反向代理剥离它吗?
user11153 2013年

@ user11153是的,D6似乎没有在那里设置X-Drupal-Cache HTTP标头。但是D7在_drupal_bootstrap_page_cache
David Thomas

@DavidThomas那么在Drupal 6中如何检查缓存状态?还有其他选择吗?并感谢您对D7的指示。
user11153 2013年

0

将缓存头添加到Drupal 6默认缓存

可悲的是,它涉及一些核心黑客活动。

在文件includes/bootstrap.inc更改行中

      // If there is a cached page, display it.
      if ($cache) {
        drupal_page_cache_header($cache);
        // If the skipping of the bootstrap hooks is not enforced, call hook_exit.
        if ($cache_mode != CACHE_AGGRESSIVE) {
          bootstrap_invoke_all('exit');
        }
        // We are done.
        exit;
      }
      // Prepare for non-cached page workflow.
      drupal_page_header();
      break;

      // If there is a cached page, display it.
      if ($cache) {
        header('X-Drupal-Cache: HIT');
        drupal_page_cache_header($cache);
        // If the skipping of the bootstrap hooks is not enforced, call hook_exit.
        if ($cache_mode != CACHE_AGGRESSIVE) {
          bootstrap_invoke_all('exit');
        }
        // We are done.
        exit;
      }
      // Prepare for non-cached page workflow.
      header('X-Drupal-Cache: MISS');
      drupal_page_header();
      break;

其余指示完全与David的回答相同

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.