在开发中禁用 Tomcat/Jetty ETag 或缓存,不适用于 IOS
Disable Tomcat/Jetty ETag or cache in development, not working on IOS
任何人都知道是否有办法禁用 tomcat etag 缓存(开发中)或它正在使用的任何机制?
它在 ios 浏览器中运行得不是很好。
当我更改文件 时,我刷新 iPhone Safari 浏览器,但没有任何更新。我可以这样做二十次,结果仍然相同。
但是,当我随后 刷新台式计算机上的 chrome 浏览器时,它会像往常一样刷新。我可以 然后转到 safari 浏览器并刷新,瞧,它刷新了。
这让我相信它每次都在与服务器通信,(我也可以在日志中看到)但是 tomcat 和码头可能 响应使用 本地缓存,因为它认为没有任何变化。
这不是真的。我不确定为什么 tomcat 威胁 Chrome 和 IOS 不同,但它似乎正在这样做。或者 IOS 不遵守我在 headers 上的缓存失效:
response.setDateHeader( "Expires" , 0 );
response.setDateHeader( "Last-Modified", new Date().getTime() );
response.setHeader ( "Pragma" , "no-cache" );
response.setHeader ( "Cache-Control", "max-age=0, post-check=0, pre-check=0, no-store, no-cache, must-revalidate" );
但这不适用于 Tomcat 或 Jetty。
显然,Java 又是罪魁祸首。
我从 URL 提供我的内容,我刚刚发现它默认缓存它们。
要防止缓存,您需要了解设置
url.openConnection().setUseCaches(false);
这让我们想知道,还有什么 类 这可能会重演。
真聪明Java,帮我做缓存。就像我不能自己处理一样,如果我需要的话。
任何人都知道是否有办法禁用 tomcat etag 缓存(开发中)或它正在使用的任何机制?
它在 ios 浏览器中运行得不是很好。
当我更改文件 时,我刷新 iPhone Safari 浏览器,但没有任何更新。我可以这样做二十次,结果仍然相同。
但是,当我随后 刷新台式计算机上的 chrome 浏览器时,它会像往常一样刷新。我可以 然后转到 safari 浏览器并刷新,瞧,它刷新了。
这让我相信它每次都在与服务器通信,(我也可以在日志中看到)但是 tomcat 和码头可能 响应使用 本地缓存,因为它认为没有任何变化。
这不是真的。我不确定为什么 tomcat 威胁 Chrome 和 IOS 不同,但它似乎正在这样做。或者 IOS 不遵守我在 headers 上的缓存失效:
response.setDateHeader( "Expires" , 0 );
response.setDateHeader( "Last-Modified", new Date().getTime() );
response.setHeader ( "Pragma" , "no-cache" );
response.setHeader ( "Cache-Control", "max-age=0, post-check=0, pre-check=0, no-store, no-cache, must-revalidate" );
但这不适用于 Tomcat 或 Jetty。
显然,Java 又是罪魁祸首。
我从 URL 提供我的内容,我刚刚发现它默认缓存它们。
要防止缓存,您需要了解设置
url.openConnection().setUseCaches(false);
这让我们想知道,还有什么 类 这可能会重演。
真聪明Java,帮我做缓存。就像我不能自己处理一样,如果我需要的话。