我以为我的javascript被缓存了,即使使用更新的版本标签也没有更新,例如:
<script type="text/javascript" src="lib/myScript.min.js?v=3"></script>
但我意识到问题在于我的html文件正在被缓存...所以浏览器甚至不知道有一个新的脚本文件。
我不想禁用缓存,但是有没有办法让浏览器知道它没有最新的html文件? (这是我放在我的html文件中,还是放在我的apache2服务器上?)
答案 0 :(得分:5)
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<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" />
来自Answer 的答案 1 :(得分:3)
您可以尝试使用这些元标记。我认为它可以解决您的问题。
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
答案 2 :(得分:2)
除了在html中明确编写外,您实际上还有两个更好的选择:ETAG
和Last-Modified
。如果您的html文件是静态文件,那么默认情况下apache2将知道如何处理其缓存。如果它是php,那么你将不得不在你的代码中处理它,或者使用一些php框架。
由于这两个标头不是用html编写的,因此浏览器不必下载整个HTTP响应,从而减少流量。所以我建议你使用它们。
我相信有点谷歌搜索可能会有所帮助。
What takes precedence: the ETag or Last-Modified HTTP header?