我正在运行一个使用YUI js framwork(v3.0)的应用程序。用户可以单击我的应用程序中的按钮,将其升级到最新版本的框架(3.4)。问题是在ie8上我得到了一些奇怪的javascript错误。在调试之后,似乎从浏览器缓存中检索到loader-min.js文件的旧版本(3.0),因为它在实例化时仍被YUI对象使用。因此,在升级过程中,我创建了一个脚本节点,将该位置添加到新的加载器文件(3.4),然后将其插入到head部分。认为我们都熟悉这种技术。但是,当用户导航到下一页时,加载的文件将丢失,旧版本(3.0)仍保留在缓存中。通过使用开发人员工具并查看应用已加载的所有javascript文件来验证这一点。
我尝试了很多不同的东西来获得新版本(3.4)我正在加载以覆盖当前缓存中的版本,这将修复javascript问题。我已经尝试在正在加载的文件名末尾添加一个唯一的字符串,这通常是js文件可以“版本化”的方式。我已经确定已经设置了我试图加载的新版本的Etag和Cache-Control标头。什么都行不通,我正撞在墙上。
一个小限制,我必须使用javascript尝试加载这个新版本的loader-min文件。由于升级过程的工作原理,我无法在html中添加简单的脚本标记。关于为什么IE8不会缓存我动态加载的版本的任何想法,想法和指示?
答案 0 :(得分:0)
这样的缓存问题通常通过为脚本的新版本提供不同的文件名(通常包含版本号)并更改包含它的HTML来引用新文件名来解决,以便它永远不会与旧文件混淆版本由缓存系统。
实际上,这个版本系统应该可以在所有外部脚本文件上使用,所以当你升级它们时,你可以确保观众立即获得新版本,并且新版本的脚本永远不会被缓存意外混合系统