防止Apache缓存HTML5清单

4

这个问题可能很容易解决,我在stackoverflow上查看了一下,但是没有找到任何有用的信息:

我已经安装了WAMP,包括PHP和Apache,并成功地运行了最新版本的Laravel。

我有一个cache.manifest文件,它可以正确加载,但即使我更改了它的内容,它似乎也不会刷新。

所以我尝试了一些我找到的方法,包括:

AddType text/cache-manifest .manifest
<IfModule mod_rewrite.c>
   Options -MultiViews
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^ index.php [L]
</IfModule>
<FilesMatch "\.manifest$">
   Header set Cache-Control "max-age=259200, proxy-revalidate"
</FilesMatch>

当我添加FilesMatch部分时,总是会出现“内部服务器错误”。
我应该怎么做才能仅防止cache.manifest文件被缓存? 我也尝试过其他的FileMatch方法,但每次都失败了(例如对于图片(png gif ...)的代码),它并不起作用。
谢谢你的帮助。
2个回答

1

使用过期类型

AddType语句已经存在,以确保清单文件具有正确的MIME类型。这可以用来指定适当的缓存头:

ExpiresByType text/cache-manifest "access plus 0 seconds"

更多有用的信息可以在 html5 boilerplate htaccess 文件 中找到。


1
另一种解决方案是使用PHP,因为根据HTML5规范,缓存清单文件的扩展名并不重要。
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header('Content-Type: text/cache-manifest');
//your content below out of PHP tag
?>
CACHE MANIFEST

然后您可以使用:

<html manifest="manifest.php">

谢谢,我理解你的观点,我认为这应该可行,但我更喜欢直接在Apache中设置它。 - Micaël Félix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接