缓存,ETag,Expires ......没有任何作用,必须刷新才能看到变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存,ETag,Expires ......没有任何作用,必须刷新才能看到变化相关的知识,希望对你有一定的参考价值。

Cache和ETag让我疯狂。

如果我更改页面并在浏览器上转到它,我所做的更改就不存在了。我必须刷新才能看到它们。这不可能是正常的。我可以让访问者回到我的主页,而新文章条目没有反映出来。

我已经尝试过取消ETag以及所有这些。

我可以做什么,以确保内容被缓存,但如果它们保存后已更改,更新版本将显示?

YSlow测试也给了我这个警告:错误配置的ETag。如果我的htaccess为空,也会发生这种情况。这表明这是我的主持人的问题,但我的两个网站也发生了同样的问题。

这就是我的.htaccess的样子:

AddDefaultCharset UTF-8
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^mypage.com [nc]
rewriterule ^(.*)$ http://www.mypage.com/$1 [r=301,nc]
ServerSignature Off
Options -Indexes
ExpiresActive On
ExpiresDefault A606990
<FilesMatch ".(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A606990
</FilesMatch>
<FilesMatch ".(jpg|jpeg|png|gif|swf)$">
ExpiresDefault A606990
</FilesMatch>
<FilesMatch ".(txt|js|css)$">
ExpiresDefault A606990
</FilesMatch>
<FilesMatch ".(xml)$">
ExpiresDefault A86412
</FilesMatch>

请有人帮我一把,我已经阅读了很多关于这个主题的文章,但似乎没什么用。

答案

如果你使用apache看起来你可能没有正确设置你的ETag配置。看看ETag Property in apache

你可能想要类似的东西

FileETag MTime Size

在您的配置中,现在使用mod_include生成的任何内容都不会为它们生成Etags

另一答案

好的,我有一个解决方案,希望它可以帮到某个人。对于要显示任何更改而无需刷新的文件类型,它只是关于ExpiresDefault到A0。

以上是关于缓存,ETag,Expires ......没有任何作用,必须刷新才能看到变化的主要内容,如果未能解决你的问题,请参考以下文章

Http头介绍:Expires,Cache-Control,Last-Modified,ETag

利用浏览器缓存 - expires 或 max-age, last-modified 或 etag

浏览器缓存之Expires Etag Last-Modified max-age详解

浏览器缓存详解:expires,cache-control,last-modified,etag详细说明

node实战前端缓存总结

浏览器缓存策略与 webpack 持久化缓存