Javascript 强制JS缓存清除而不进行服务器端编码

Javascript 强制JS缓存清除而不进行服务器端编码,javascript,caching,Javascript,Caching,我想清除登录页面上一些JavaScript文件的缓存。我们的网络语言非常陈旧,我一直在使用它。没有PHP、Rails或任何有趣或新奇的东西 正在清除JS文件上的缓存 1.我无法使用服务器端代码。 2.我无法手动附加查询字符串。 3.我找到了提到的meta标记,但注意到它严格地引用了缓存HTML 我唯一的想法是在页眉中使用JavaScript操作HTML文档的文本,然后再将文件加载到页面下方的标记中。虽然我没能成功地让它工作。有什么想法吗?我假设您当前的代码中有类似的内容: <script

我想清除登录页面上一些JavaScript文件的缓存。我们的网络语言非常陈旧,我一直在使用它。没有PHP、Rails或任何有趣或新奇的东西

正在清除JS文件上的缓存
1.我无法使用服务器端代码。
2.我无法手动附加查询字符串。
3.我找到了提到的meta标记,但注意到它严格地引用了缓存HTML


我唯一的想法是在页眉中使用JavaScript操作HTML文档的文本,然后再将文件加载到页面下方的标记中。虽然我没能成功地让它工作。有什么想法吗?

我假设您当前的代码中有类似的内容:

<script type="text/javascript" src="/site/js/script.js"></script>

如果你不能改变这一点,你就会陷入困境。浏览器将在看到标记后立即加载该标记。没有可靠的方法阻止浏览器这样做,或者在浏览器对标记进行操作之前对其进行操作

但是,如果您可以更改它,对我来说最明显的解决方案是将其删除,并使用缓存破坏URL动态注入脚本标记。例如(未经测试,但你已经有了想法):


var scriptUrl=“/site/js/script.js”,
CacheBistingUrl=scriptUrl+“?”+Date.now(),
newScriptElement=document.createElement(“脚本”)
;
setAttribute(“src”,CacheBistingUrl);
document.body.appendChild(newScriptElement);
这将在页面末尾附加一个新的脚本元素,如
,浏览器将像加载任何其他脚本标记一样加载该元素

如果您已经有了jQuery,顺便说一句,这会更简洁一些:

<script>
  var scriptUrl = "/site/js/script.js",
      cacheBustingUrl = scriptUrl + "?" + Date.now()
  ;

  $("<script>").attr("src", cacheBustingUrl).appendTo(document.body);
</script>

var scriptUrl=“/site/js/script.js”,
CacheBistingUrl=scriptUrl+“?”+日期。现在()
;
$(“”)attr(“src”,cacheburstingurl).appendTo(document.body);

如何使用?每种web语言都允许您发送HTTP头,尽管它可能很古老。这是什么语言?!给我们看看你的服务器端代码!无需切换到其他语言。向我们展示您试图操作HTML源代码的内容。@Bergi按照我们的web框架的设置方式,它不允许使用服务器端代码,除非有人登录并设置会话。他们被旧JS卡在登录屏幕上。很好的调用,我将添加HTML源代码。从服务器发送
缓存控制:no Cache
头。您不必更改任何代码来实现这一点,只需配置一些服务器或其他服务器。是的,当您在iframe.onload上使用引用脚本中包含的函数时,它将失败-这正是为什么这不是一个真正的解决方案…@StefanSteiger Okay。请随时发布答案。
<script>
  var scriptUrl = "/site/js/script.js",
      cacheBustingUrl = scriptUrl + "?" + Date.now()
  ;

  $("<script>").attr("src", cacheBustingUrl).appendTo(document.body);
</script>