我们有一个智能手机应用程序可以从Google的blobstore下载blob并对其进行校验。基本上blob是不可变的,直到被具有新文件名的新版本替换,非常适合缓存。
但是:在极少数情况下(到目前为止一个月内有3次),blob丢失了一些字节。我在HEX模式下验证了一些字节,看起来我们的预压缩JS等文件在被缓存之前通过页速处理器传输(每次失败都减小了相同的大小),并且没有损坏但不能通过size / checksum验证。我们的压缩机在网络的某个地方留下了8个新线,而不是它的邪恶双胞胎。
每个文件只有一个请求进入我们的服务器日志,即使我们多次尝试过。
到目前为止,我还没有发现任何缓存规范允许修改应该缓存的文件。有没有人有关于这种奇怪行为的信息?
是否需要发送no-cache标头才能校验HTML,JS或CSS文件?我们对mp3和jpg内容没有任何问题。
答案 0 :(得分:0)
我找到了原因:至少有一家手机公司在其移动网络中部署了页速压缩器。 T-Mobile奥地利也可能在德国通过删除换行符和其他空格来修改下载的文件。错误在他们的网络上可靠地再现,但不能同时在WiFi上。运营商也会忽略我们的无缓存标头,唯一的解决方法是使用https!
然而,有时候这不涉及移动运营商,但移动运营商解决了我们的大多数问题。