避免Javascript/CSS缓存



我一直在搜索很多关于这个,但我找不到任何真正有效的解决方案:我们正在使用大量JavaScript/css文件构建一个Web应用程序,这些文件可以随时修改。问题是我们需要客户端的浏览器始终获取脚本的最新版本。

我们尝试添加 GET 查询 (?v=CurrentDate(,但浏览器会不断加载旧脚本,直到您点击刷新几次或执行 CTRL+F5。

我们要避免的一件事是将这些文件存储在不同的文件夹中,例如/scripts/v1.0/,然后是/scripts/v2.0/...

我们正在使用 ASP.NET MVC 5,Bootstrap和JQuery。一件重要的事情:我们只想避免一些脚本/css 缓存,而不是所有内容。

我非常感谢您的帮助! 谢谢!

浏览器缓存是浏览器存储来自远程资源的结果的能力。这个过程如果相当简单:它记住请求资源url和响应。如果在缓存资源时再次请求资源,而不是进行调用,浏览器会从缓存中提供保存的副本,因为它可以节省带宽和时间。

如果添加的资源调用始终唯一的参数,浏览器将始终重新加载它,因为该参数将被更改,浏览器将假定它是不同的资源。

通常,以秒(php 时间戳(或毫秒(javascript 时间戳(为单位的timestamp将确保您的资源始终重新加载:

JavaScript:

<script src id="myScript"></script>
<script type="text/javascript">
// change path to match your file:
let resourcePath = '/js/someScript.js';
document.getElementById('myScript').src = resourcePath + '?v=' + Date.now();
</script>

菲律宾语:

<script src="/js/someScript.js?v=<?=time();?>"></script>

注意:您可以对任何其他资源(.css或媒体资源(执行相同的操作,以禁用缓存。另请注意,从技术上讲,您并没有禁用缓存 - 这并不容易做到,并且因浏览器而异。您允许缓存,但您总是请求不同的资源,因为它具有不断变化的虚假参数(并且可以从v重命名为其他任何内容,例如,?no-cache=(。

最新更新