【问题标题】:Cache Manifest Caching Itself缓存清单缓存自身
【发布时间】:2012-12-11 07:42:51
【问题描述】:

真的被这个给难住了。

我正在尝试使用 HTML5 缓存清单缓存一些资源(是的,我知道,不要评判我),但清单似乎正在缓存自己。


manifest 文件实际上是一个动态 PHP 脚本,所以它有一个 .php 扩展名。


设置了以下标头 (How do I completely disable caching in Cakephp?)

header('Cache-Control: no-store, private, no-cache, must-revalidate');                  // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);    // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                                       // Date in the past  
header('Expires: 0', false); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Pragma: no-cache');

header("Content-type: text/cache-manifest");

清单在 NETWORK 部分中包含以下内容:

NETWORK:
/cachemanifest 
/cachemanifest/ 
/cachemanifest/* 
*/cachemanifest/* 
cachemanifest/ 
cachemanifest

/cachemanifest/manifest.php
cachemanifest/manifest.php

*

当然,清单文件本身被排除在 CACHE: 部分之外。


在同一目录中还有一个 .htaccess 文件,其中包含:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/cache-manifest "access plus 0 seconds"
</IfModule>

该站点是用 CakePHP 构建的,它显然有一些我不太了解的“有用”缓存机制。我假设 PHP 标头会绕过任何东西...... PHP 可以做到。


那么,我错过了什么?

【问题讨论】:

    标签: php apache cakephp cache-manifest


    【解决方案1】:

    实际上,其中一个似乎有效。缓存只需 30 多秒即可意识到需要更新。

    【讨论】:

      【解决方案2】:

      缓存清单的工作方式是清单要更新自身,清单中的某些文本必须更改,即使它只是一个字母。这可以通过让构建自动化程序在每次代码更改时添加时间戳来完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-20
        • 2013-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-23
        相关资源
        最近更新 更多