通过Head JS加载脚本时,我无法使用Ctrl + F5(或等效的)键盘快捷键强制刷新内容。
脚本正确缓存,浏览器遵循从服务器发送的缓存指令(我使用的是IIS 7.5)。但与标记中直接包含的脚本标记不同,我无法覆盖缓存并强制刷新通过Head JS加载的脚本。
我假设这是脚本动态加载方式的结果。我可以忍受这种行为,因为强制刷新只是在开发过程中很方便,而且我知道其他方法可以强制从服务器检索内容。
我只是想知道是否有人能解释为什么会这样......
这对我们来说从来都不是问题,因为我们的静态内容的缓存指令是适当设置的。这在开发和QA中只是一个问题,我可以选择的选项是......
我选择了第二个选项。
答案 0 :(得分:2)
动态脚本加载不是正确加载页面的一部分。当您强制刷新时,浏览器会重新加载页面以及其HTML和引用的CSS文件中引用的所有资源,但是在页面内容中未引用您使用head.js
加载的脚本,并且浏览器无法弄清楚head.js
将创建对其他资源的引用。在创建这些引用时,浏览器不再刷新页面,因此适用正常的缓存规则。
您可以通过在其网址中添加唯一的查询字符串来强制重新加载脚本(例如jquery.js?random=437593486394
),但这会禁用页面所有加载的缓存,而不仅仅是在强制刷新时。
答案 1 :(得分:1)
这也是require.js的问题。希望其中一个解决方案也适用于Head.Js
后者是我开发机器的首选选项
答案 2 :(得分:0)
我不会说它是动态或非动态的问题,当你注入脚本时,它仍会导致浏览器发出HTTP请求并应用它应用的任何缓存逻辑。
如上所述,如果您不希望脚本缓存..动态或静态,则无关紧要,您通常需要以查询字符串的形式附加时间戳。
如果您只想查看更改是否有效,请在浏览器中强制刷新...通常是CTRL + F5