【问题标题】:After hitting the server, browser still uses a cached version访问服务器后,浏览器仍然使用缓存版本
【发布时间】:2012-06-14 04:11:43
【问题描述】:

我正在使用 AppEngine 和 Restlet 将我的数据作为客户端提供给浏览器中的 GWT 应用程序。 Restlet-GWT 版本使用 GWT-RPC 序列化作为底层传输格式。 GWT-RPC 序列化依赖于客户端和服务器之间的共享源进行序列化/反序列化。

现在,在向其中一个共享源类添加新属性后,反序列化开始失败。 AppEngine 服务器使用响应 HTTP 200 / OK 正确处理了请求,并发送了一个正确序列化的对象。客户每次都哽咽。

过了一会儿,我发现浏览器试图反序列化我的对象的缓存副本(没有新添加的属性),因此浏览器中的反序列化失败了。

现在的问题是:如果服务器被击中,为什么浏览器使用缓存副本?

IMO,这违背了缓存的目的/优势,正在消耗服务器和网络资源并且没有使用新的结果?如果浏览器决定使用缓存副本,我预计不会往返服务器。

谢谢!

【问题讨论】:

  • 我在将新版本部署到 AppEngine 时也遇到了这个问题,我有什么办法来防止这种情况发生?
  • 是的,我确实停止/启动了应用程序,重新编译了所有...

标签: google-app-engine gwt caching browser restlet


【解决方案1】:

您的浏览器将 GWT 为您的应用程序编译的 javascript 保存在缓存中。

简单的解决方案,对页面进行几次硬刷新(ctrl + F5,或 cmd + shift + R)。

如果您想防止这种情况发生,请参阅this question

【讨论】:

  • 所以浏览器正在缓存已编译的 javascript 而不是 XHR 请求的有效负载?这听起来像是一个有效的解释!
猜你喜欢
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 2020-07-18
  • 1970-01-01
  • 2011-05-26
  • 2015-11-07
  • 2017-06-02
相关资源
最近更新 更多