服务器忽略代码文件中的更改-缓存已禁用

问题描述 投票:0回答:2

我在本地主机(Windows 7,Chrome)上测试了html / js代码,并且大约50%的时间代码更改未反映在浏览器中(我可以通过Dev Tools / Sources看到它)。互联网上有大量建议,但似乎都行不通:

  • 右键单击重新加载,然后选择“清空缓存并强制重新加载”-在30%的情况下没有帮助。
  • 在Chrome开发者工具的“网络”标签中禁用缓存-没有帮助。
  • 在标题中添加<meta http-equiv="Cache-control" content="no-cache">-无济于事。
  • <script src="common.js"></script>替换<script src="common.js?blabla"></script>-在60%的情况下有帮助,但是在每次更改都是一件繁琐的事之后,您需要这样做。此外,它不适用于html更改。
  • 将文件复制到新文件(例如,将index.html复制到index2.html),并替换代码中的文件名-总是可以的,但是这样做比较麻烦。

当我将代码提交到github.io时,出现了完全相同的问题

[请帮助我做到这一点,以便该站点立即反映出代码更改。

javascript html server browser-cache
2个回答
0
投票

在特定情况下,使用Google Chrome浏览器,请尝试以下操作:打开开发工具->转到“网络”标签。刷新页面后,选中“禁用缓存”复选框。

注意:为使此功能每次在“开发工具”窗口中都必须始终保持开放状态。

enter image description here

但是,为了将更改传播给用户,而又无需他们硬刷新页面等,您必须在每个引用文件的末尾附加文件版本,以用于频繁更改的文件(正如您指出的那样)。例如:

<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/stackoverflow/primary.css?v=20b379f72a37" >

附加到末尾的v=20b379f72a37是文件内容的自动生成的文件哈希。


0
投票

使用参数是正确的方法!在这里,您可以添加仅手动更改的版本号,并且可以将其设置为Date.time()进行调试,以便在

标记中强制覆盖所有缓存的版本,因为该参数始终是新参数一:
< script type="text/javascript"> 
    var script = document.createElement('script'); 
    var version = Date.time();
    script.src = "common.js?v="+version; 
    document.head.appendChild(script) 
< /script>

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.