Java GWT应用程序中出现错误HTTP 404(“脚本标记失败-无可用状态”)
在我们的应用程序中,我们使用和 不幸的是,弹出窗口中经常显示以下错误: 下载/path/deferredjs/somegenerateId失败,状态为404 (“脚本标记失败-无可用状态”) 只有在部署了应用程序的新版本时,才会出现这种情况。清除浏览器缓存可以解决此问题 我发现这个错误发生在GWT中的类中Java GWT应用程序中出现错误HTTP 404(“脚本标记失败-无可用状态”),java,javascript,gwt,http-status-code-404,gxt,Java,Javascript,Gwt,Http Status Code 404,Gxt,在我们的应用程序中,我们使用和 不幸的是,弹出窗口中经常显示以下错误: 下载/path/deferredjs/somegenerateId失败,状态为404 (“脚本标记失败-无可用状态”) 只有在部署了应用程序的新版本时,才会出现这种情况。清除浏览器缓存可以解决此问题 我发现这个错误发生在GWT中的类中 除了每次出现浏览器缓存时都清除它之外,还有其他方法解决此问题吗?您的HTTP关于缓存的服务器配置似乎没有正确配置,无法与GWT一起使用 根据: 不应缓存*.nocache. .缓存。可以安全
除了每次出现浏览器缓存时都清除它之外,还有其他方法解决此问题吗?您的HTTP关于缓存的服务器配置似乎没有正确配置,无法与GWT一起使用 根据:
- 不应缓存
*.nocache.
- .缓存。可以安全地缓存
*.nocache.js
文件是:
此文件负责根据客户端的浏览器和语言环境选择要为客户端加载的应用程序的正确版本(…)。与每个浏览器/区域设置兼容的应用程序的各种版本是.cache.html
应用程序文件
简而言之:引导文件会更改每次编译,并且是应用程序的“网关”。它选择要加载的.cache.
应用程序版本。它的名称必须是常量,因为您正在从主机页引用它。由于.cache.*
文件的名称会随着源代码的每次更改而更改(因为其名称是其内容的MD5哈希),因此可以安全地缓存它们
因此,发生的情况是缓存了一个旧的引导脚本(并加载了它而不是新的),它试图加载应用程序的旧版本(一个
*.cache.*
文件)。但是,这些文件可能已通过编译/重新部署被删除,因此根据.nocache的缓存,404
。文件被阻止:“为了帮助防止缓存,gwt.js中的代码实际上在文件名的末尾附加了一个HTTP GET参数,该参数包含一个唯一的时间戳。”因此我不确定是否需要此Apache配置。这似乎是旧时代的遗留问题-gwt.js
已在GWT1.3中使用,引导过程使用。您的项目中是否有gwt.js
文件?您是否将其加载到主机页中?您可以在浏览器的开发人员工具中查看对服务器的请求,并验证文件是否已缓存、是否再次获取等。实际上,war
文件夹中没有gwt.js
。因此,我想我必须检查服务器的HTTP配置。是否可以在*.nocache.js
文件中添加一个唯一的ID,使其永远不会被缓存。是的,这是使浏览器在每次加载页面时获取文件的另一种方法。但是我相信这个问题应该通过设置适当的缓存相关头来解决,而不是通过一些“版本控制”技巧。特别是当您想确保*.nocache.js
永远不会被缓存,同时还要确保*.cache.
文件总是被缓存(它们的重量很容易超过1MB,您不希望用户反复下载)。