我们在主屏幕上保存了一个移动网络应用程序。该应用程序使用带有 jquery mobile 的单页 HTML 文件进行编码。
在 iOS5 及以下版本中,设备不会缓存 index.html 文件,因此每次启动应用程序时,设备都会请求 HTML 页面。这非常重要,因为我们在服务器前面有另一个处理身份验证的应用程序,因此我们依赖 302 http 代码,它会导致重定向进行身份验证。如果成功,另一个重定向会返回到我们的 index.html 页面。
在 iOS6 中,尽管我们设置了无缓存控制标头,但 index.html 文件似乎已被缓存!这是一个问题,因为我们无法进行身份验证,因此当用户开始使用应用程序时,所有请求都会失败(它们未经身份验证)。
我似乎找不到任何关于这是否是 iOS6 中实现的功能的细节。有人对此有所了解吗?我知道他们对缓存有点疯狂(缓存帖子响应)......
注意:了解身份验证的解决方案并不理想,但我们目前无法更改。只是寻找关于苹果做了什么导致这个错误的参考!
更新:
在使用服务器正在响应的 Charles Web 调试代理后发现了一些有趣的东西,Cache-Control:private
这意味着代理不会缓存,但浏览器会缓存。这就提出了一个问题,即 iOS 6 主屏幕移动网络应用程序现在是否真的正确处理了这个缓存控制?!?需要进一步调查我们的基础架构中的哪些硬件正在添加此缓存控制。