iOS6Ajax POST请求缓存正在成为我们WebApp的一个巨大问题。我们的大多数用户都将该应用添加到了主屏幕上。自从升级之后,大多数到后端的POST请求都不能工作,并且数据从6天前就已经过时了,而且还在继续计算。我们知道解决这个问题的两种变通方法,一种是通过添加时间戳或一些随机输入来改变每个POST请求,使其不同,第二种是禁用Web服务器上的缓存。
以下文章详细介绍了这两种变通方法:iOS 6上的Safari是否缓存$.ajax结果?
如果在iOS6升级之前(或升级之后)关闭Web服务器上的缓存,则可以解决这个问题。然而,似乎所有的POST请求,自升级以来,直到我们关闭缓存从添加到主屏幕的应用程序,仍然是缓存的!而我们却找不到清除他们的方法。移除主屏幕应用程序并重新启动设备并不起作用!除了关闭Web服务器上的缓存之外,我们唯一的选择是更改URL或为每个请求添加时间戳。
除了恢复到工厂之外,有谁知道清除主屏幕应用缓存的方法吗?请提供详细情况。
警告通过在请求中添加时间戳而不关闭服务器上的缓存来实现变通方法的任何人。如果你的应用程序被添加到主屏幕上,那么现在每个post响应都将被缓存并且看起来不会过期。除非有人有办法清除它,否则这看起来像是一个潜在的内存泄漏!
在我的经验中,唯一能同时克服这个缓存问题的方法是采用Google的方法,在URL中添加一个每个请求id。然后,您可以使用mod_rewrite或其他类似的服务器引擎,使其对后端脚本透明。