首先我应该说我花时间阅读本案例中的所有主题但没有成功,最近我遇到了我的网站上的客户端/浏览器缓存问题,它没有任何变化。服务器端缓存很好,但客户端工作很糟糕,我应该每次按 CTRL + F5 ,我不想这样,因为它对用户不好,我知道我可以在devTool时禁用缓存是开放的,但我不是在谈论用户而不仅仅是我自己。这也发生在桌面和移动设备上。在移动设备中,我应该去设置/隐私/清除缓存。
这是我的网站代码与缓存有关:
htaccess的:指定mod_expires
ExpiresByType text/css "access plus 1 month"
我从gzip中删除了css
,但没有成功。也改1个月到1秒。
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
PHP标题:
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Pragma: no-cache");
header("Vary: Accept-Encoding");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
HTML meta:
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
如你所见,我尝试了所有可能的方式与烦人的缓存战斗,但没有成功。我知道我可以在version
或css
的末尾添加js
,但所有人都知道这是清除缓存的坏习惯:
从静态资源中删除查询字符串
资源与&#34;?&#34; URL中的某些代理缓存没有缓存 服务器。删除查询字符串并将参数编码为 以下资源的URL:
那么,在正确的方向上移除css
和js
重缓存的最佳方法是什么?
答案 0 :(得分:0)
尝试使用HTTP Etags。这将允许客户端推断是否需要从服务器重新加载资源。
答案 1 :(得分:0)
每次都有效:在文件末尾添加? + random stuff
。例如:
<script src="path/to/file.css?8768316833"></script>
在PHP中,我相信这应该以这种方式完成(我多年没有编写任何PHP,但是这里有:)
<script src="path/to/file.css?<?php echo rand() ?>"></script>"
这将强制浏览器每次都下载文件的新副本。
答案 2 :(得分:0)
<?php $filename "path/to/file.css"; ?>
<script src="<?php echo $filename; ?>?ver=<?php echo filemtime($filename); ?>">
这将在浏览器中缓存,但是当您在文件中进行更改时,文件时间将更新,客户端将获得该文件的新副本。