0

我们有一个智能手机应用程序,可以从 Google 的 blobstore 下载 blob 并对它们进行校验和。基本上,blob 在被具有新文件名的新版本替换之前是不可变的,非常适合缓存。

但是:在极少数情况下(到目前为止,一个月内 3 次)blob 丢失了一些字节。我在 HEX 模式下验证了一些字节,似乎我们的预压缩 JS 等文件在被缓存之前通过页面速度处理器传输(每次失败都会减小相同的大小),并且没有损坏,但不再可以通过大小/校验和验证。我们的压缩器在网络某处留下了 8 个换行符,而不是它的邪恶孪生兄弟。

每个文件只有一个请求进入我们的服务器日志,即使我们尝试了多次。

到目前为止,我还没有发现任何缓存规范都允许修改应该缓存的文件。有没有人有关于这种奇怪行为的信息?

是否需要发送无缓存标头才能校验 HTML、JS 或 CSS 文件?我们对 mp3 和 jpg 内容没有任何问题。

4

1 回答 1

0

我找到了原因:至少有一家移动电话公司在其移动网络中部署了页面速度压缩器。T-Mobile 奥地利和可能也在德国通过删除换行符和其他空格来修改下载的文件。该错误在他们的网络上可靠地重现,但不是同时在 WiFi 上。运营商也忽略了我们的无缓存标头,唯一的解决方法是使用 https!

然而,在其他时候,这并不涉及移动运营商,但移动运营商解决了我们的大部分问题。

于 2013-11-21T16:47:06.780 回答