火狐浏览器不会立即反映网站的新变化,但Chrome浏览器会



我注意到Firefox不会立即将任何设计更改(HTML/CSS/images)反映到网站上。它必须至少刷新一次才能看到更改。因此,基本上,当用户来到网站时,他/她会看到一个混乱的页面,必须刷新一次才能看到新的设计。Chrome没有这个问题。如何使用HTML/JavaScript或JavaScript库修复此问题?

我当前在HTML 中的元代码

<HEAD>
<META http-equiv="Cache-Control" content="no-cache">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Expires" content="0">
.....

处理缓存资源的一种简单技术是在HTML中该资源的URL末尾添加一个随机参数。

例如:

<img src='mygif.gif'/> <!-- this is cached -->

如果mygif.gif已经缓存,浏览器就不会再下载了——所以要在mygif.If更改后强制下载,请修改URL,如下所示:

<img src='mygif.gif?version=1.1'/> 
<!-- this is not cached as it appears to be a different file -->

对于浏览器,此文件是不同的文件,必须下载,但是对于您的服务器,它是相同的文件。

为了便于维护,最好与随机参数保持一致,所以我通常使用类似?version=1的东西,所以如果你需要再次这样做,你可以在你的项目上进行字符串替换并增加版本号。

这个技术的另一个很好的解释可以在这里找到:禁用某些图像的缓存

然而,重要的是要记住,你不能强迫浏览器清除其缓存,你只能使用这样的技术,浏览器总是会决定缓存什么和下载什么,即使缓存和过期标头也只是一个"提示"。

我发现以下帖子对防止所有类型的浏览器缓存页面非常有用:

确保网页没有缓存,跨所有浏览器

除了元标签,我还使用了一个日期戳或唯一的代码,如下所示:

<link rel="stylesheet" href="css/styles.css?version=140830" media="screen" />

(顺便说一句,我遇到了相反的问题——在Firefox中工作,但在Chrome中不工作。)

相关内容

最新更新