相关疑难解决方法(0)

如何强制浏览器重新加载缓存的CSS/JS文件?

我注意到一些浏览器(特别是Firefox和Opera)非常热衷于使用.css.js文件的缓存副本,即使在浏览器会话之间也是如此.当您更新其中一个文件但用户的浏览器继续使用缓存副本时,这会导致问题.

问题是:在更改文件时,强制用户浏览器重新加载文件的最优雅方法是什么?

理想情况下,解决方案不会强制浏览器在每次访问页面时重新加载文件.我会发布自己的解决方案作为答案,但我很好奇,如果有人有更好的解决方案,我会让你的投票决定.

更新:

在这里讨论了一段时间后,我发现John Millikinda5id的建议很有用.事实证明,有一个术语:自动版本控制.

我在下面发布了一个新的答案,它是我原来的解决方案和John的建议的组合.

SCdF建议的另一个想法是将伪造的查询字符串附加到文件中.(一些Python代码自动使用时间戳作为伪造的查询字符串由pi提交.).但是,有一些关于浏览器是否会使用查询字符串缓存文件的讨论.(请记住,我们希望浏览器缓存文件并在以后的访问中使用它.我们只希望它在更改后再次获取文件.)

由于不清楚伪造的查询字符串会发生什么,我不接受这个答案.

javascript css caching auto-versioning

957
推荐指数
26
解决办法
38万
查看次数

hash css和js文件来破解缓存.它慢吗?

我有一些生成页面模板的脚本.此外,此脚本在HTML中呈现<script><link rel='stylesheet'>标记.

我想用"?v = xxxxx"参数添加缓存中断功能.

我是这样做的:

foreach ($scripts as &$script) {

    // get script file name
    $script = "{$this->_js_folder}/{$script}";

    // get it's realpath
    $realfile = realpath(substr($script,1));

    // hashing the file
    $hash = md5_file($realfile);

    // adding cache-breaking number
    $script .= '?v='.$hash;

} //: foreach
Run Code Online (Sandbox Code Playgroud)

每次用户刷新页面时,要散列大约十几个文件,这不是很慢吗?

php hash md5-file

2
推荐指数
1
解决办法
2839
查看次数

标签 统计

auto-versioning ×1

caching ×1

css ×1

hash ×1

javascript ×1

md5-file ×1

php ×1