我们正在生产一个JavaScript库,它将被我们没有直接控制的其他领域的网页所包含。理想情况下,我们希望缓存该文件,但也能够告诉用户的浏览器(已经加载了包含.js文件的网页)清除其缓存,并在需要推送错误修复或类似的情况下重新加载该.js文件。如果“按需”刷新是不可能的,那么我们希望为其设置一个适当的时间,以便在合理可预测的时间间隔内进行更改。这个是可能的吗?
编辑:虽然我完全了解向.js源URL添加查询字符串或在内容更改时更改.js文件的名称等技巧,但据我所知,所有这些都需要更新包含.js文件的页面源(以及我不控制的页面)。我想要的解决方案在初始的‘这里添加这个JavaScript包含(或类似的)到您的页面’之后,不需要更改包含页面的HTML源代码。
发布于 2014-03-31 19:50:47
由于您无法控制第三方网站,所以不能附加到querystring,这是强制更新脚本的一种简单方法。您可以控制服务器缓存脚本的时间长度,或者强制JS每次需要更新脚本时都可以这样做。
这是给网站所有者的“这里,包括这个在你的网页”。
<script src="http://link/to/loadthisone.js"></script>但是loadthisone.js只是一个小文件。服务器被告知永远不要缓存该文件,也可能需要几个小时。它很小,所以不太冒犯人。这一个加载更大的JS库,您不希望网站访问者每次都重新加载。
loadthisone.js
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://link/to/the/real/js/file.js?version=123'; // the library and version
head.appendChild(script);然后,当您推送新版本时,将更新此脚本中的版本号(手动或自动)。
如果无法对服务器进行任何更改,则可以使用PHP提供loadthisone.js服务,并以这种方式强制不缓存。
发布于 2014-03-31 19:42:14
您可以通过向URL添加查询字符串来“伪造”新请求:
<script src="http://eternalsite.com/js/script.js?v=1"></script>如何以及何时发生这种情况必须由您的脚本来控制。
https://stackoverflow.com/questions/22770654
复制相似问题