我已在我的网络应用中配置了应用缓存清单,Chrome检测到内容何时更改,触发"应用缓存下载事件"但内容未更新。
它有什么用?
答案 0 :(得分:0)
我可以阅读here:
应用程序是一个额外的缓存,而不是替代的一个 当浏览器更新ApplicationCache时,它会像往常一样请求URL。它遵循常规的缓存说明:如果一个项目的标题显示“假设我在2022年4月1日之前表现良好”,浏览器将认为资源确实是好的,直到2022年4月1日,并且不会给服务器带来更新的麻烦。 这是一件好事,因为您可以使用它来减少浏览器在清单更改时需要进行的请求数量。 如果他们的服务器不提供缓存标头,这可以在他们进行实验时将人们赶出去。没有细节,浏览器会猜测缓存。您可以更新whatever.html和清单,但浏览器不会更新该文件,因为它“猜测”它不需要更新。 您提供的所有文件都应具有缓存标头,这对清单中的所有内容和清单本身尤为重要。如果文件很可能更新,则应该使用no-cache。如果文件不经常更改必须重新验证是一个更好的选择。例如,must-revalidate是清单文件本身的一个很好的选择。哦,虽然我们正在谈论这个问题......
现在我想我必须为我服务器上的所有文件启用no-cache标头,并且仅依赖于appcache,但是
回答:intellij无法从内置服务器中禁用客户端缓存,但您可以通过chrome执行此操作:Disabling Chrome cache for website development
回答:根据this,您应该修改webdefault.xml
<!--
<init-param>
<param-name>cacheControl</param-name>
<param-value>no-cache,public</param-value>
</init-param>
-->
但是将它放在web.xml文件中会更容易:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
<init-param>
<param-name>cacheControl</param-name>
<param-value>no-cache,public</param-value>
</init-param>
</servlet>