是否可以为托管服务器上的JavaScript文件指定缓存长度或强制刷新?

是否可以为托管服务器上的JavaScript文件指定缓存长度或强制刷新?,javascript,caching,Javascript,Caching,我们正在生成一个JavaScript库,该库将包含在我们无法直接控制的其他域上的网页中。理想情况下,我们希望缓存该文件,但也能够告诉用户的浏览器(已加载包含我们的.js文件的网页)清除其缓存并重新加载该.js文件,如果我们需要进行bug修复或类似操作。如果“按需”刷新是不可能的,那么我们希望设置一个适当的生存时间,以便以合理的可预测间隔获取更改。这可能吗 编辑:虽然我完全了解在.js源URL中添加查询字符串或在内容更改时更改.js文件的名称等技巧,但据我所知,所有这些都需要更新包含.js文件(以

我们正在生成一个JavaScript库,该库将包含在我们无法直接控制的其他域上的网页中。理想情况下,我们希望缓存该文件,但也能够告诉用户的浏览器(已加载包含我们的.js文件的网页)清除其缓存并重新加载该.js文件,如果我们需要进行bug修复或类似操作。如果“按需”刷新是不可能的,那么我们希望设置一个适当的生存时间,以便以合理的可预测间隔获取更改。这可能吗

编辑:虽然我完全了解在.js源URL中添加查询字符串或在内容更改时更改.js文件的名称等技巧,但据我所知,所有这些都需要更新包含.js文件(以及我不控制的页面)的页面源。我想要的解决方案不需要在首字母“here add this JavaScript include(或类似内容)to your page”之后更改include页面的HTML源。

您可以通过向URL添加查询字符串来“伪造”新请求:

<script src="http://eternalsite.com/js/script.js?v=1"></script>


发生这种情况的方式和时间必须由您的脚本控制。

由于您无法控制第三方网站,因此无法附加到querystring,这是强制更新脚本的简单方法。您可以控制服务器缓存脚本的时间长度,或者强制JS在每次需要时进行更新,您可以这样做

这是给网站所有者的“在这里,将此包含在您的页面中”

然后在推送新版本时(手动或自动)更新此脚本中的版本号


如果您无法在服务器上进行任何更改,则可以使用PHP提供loadthisone.js,并强制不使用缓存。

您可以在服务器上进行设置,或者可以在js文件中附加一个查询字符串,这将强制浏览器加载新版本,只要查询字符串更改
,但由于您无法控制这些站点,您需要在您的服务器上执行此操作,或者有其他方法…请详细说明“在您的服务器上设置此设置”。您使用的是哪种类型的服务器?Linux?运行IIS的Windows。。。“这将包含在我们无法直接控制的其他域上的网页中”是的,但有人会假设您已经从您的站点中包含的脚本将完成此任务。@Diodeus您能否详细说明我们将如何执行此操作假设我们对托管网页的唯一控制权是“此处,将此代码添加到您的页面'您必须插入指向您的页面的脚本。该脚本将读取页面上的所有脚本标记,然后根据一些规则更改SRC。
<script src="http://link/to/loadthisone.js"></script>
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);