【问题标题】:How to force browser to load new content如何强制浏览器加载新内容
【发布时间】:2020-07-31 20:07:43
【问题描述】:

我的浏览器出现问题(笔记本电脑上的 Chrome 和智能手机上的 Chrome)。 我正在开发一个网站页面(HTML、javascript),我注意到我的浏览器总是检索缓存的信息而不每次都加载页面,所以我看不到我在代码中所做的更改。

为了查看更改,我总是必须清除 Web 数据并清除浏览器缓存。 我已经检查了两个浏览器的设置,但一切似乎都正常。

我添加了这些行,但问题仍然存在。

<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="HandheldFriendly" content="True">
<link rel="icon" href="favicon.ico" type="image/x-icon">
<meta http-equiv="cache-control" content="no-cache, must-revalidate, post-check=0, pre-check=0" />
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

【问题讨论】:

  • 内容是指静态文件(JS、CSS、...)?还是 HTML?
  • JS 和 HTML

标签: javascript jquery html caching browser


【解决方案1】:

客户端技术

强制一个新版本进入浏览器,你可以随时在请求中添加一个查询字符串,并在你进行重大更改时提高版本号:

 <script src="/myJavascript.js?version=4"></script>      <-- Version Number add each time

这将确保每个人都能获得新文件。它之所以有效,是因为浏览器会查看文件的 URL 以确定它是否在缓存中有副本。如果您的服务器未设置为对查询字符串执行任何操作,它将被忽略,但该名称在浏览器中看起来就像一个新文件。

开发端技术

另一方面,如果您正在开发一个网站,您不希望每次保存对开发版本的更改时都更改版本号。

因此,在您开发网站时,一个很好的技巧是自动生成查询字符串参数:

<!-- Development version: -->

<script>document.write('<script src="/myJavascript.js?dev=' + Math.floor(Math.random() * 100) + '"\><\/script>');</script>

每次都会为你生成查询字符串!

【讨论】:

  • 我需要在 myJavascript.js 中写什么?
  • @MarcusBarnet 你必须用你自己的 js 文件名替换 --> /myjavascript.js
  • 我会尝试这个解决方案,让你知道它是否有效!谢谢!
猜你喜欢
  • 2012-11-04
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 2013-07-27
  • 2017-12-05
  • 1970-01-01
相关资源
最近更新 更多