2011-03-26 107 views
1

我一直在开发使用脱机缓存一个web应用程序,部分原因是由于一个方式,以减少在使用时向服务器发出的呼叫数量。(移动)Safari浏览器加载资源,尽管缓存清单

我希望有登录页面加载和缓存所有的资源,使得登录后的所有页面就不会去。

我从服务器日志中注意到,虽然清单中的所有资源(图像,样式表,JavaScript文件)都是在登录页面加载时,请求用户登录后重定向到,/workspace/,Safari浏览器(台式机和移动)似乎要求的样式和/workspace/再次被列为JavaScript文件,导致从服务器HTTP 304

虽然服304负载是最小的,我想想知道如果有办法避免这些的方法。我在Chrome(开发通道)中测试了相同的代码,Chrome只在登录后再次请求缓存清单,就是这样。

希望有什么想法!提前致谢!

+0

我有类似的问题。事实上,我注意到移动Safari甚至根本不需要缓存清单!换句话说,我的应用程序可以在桌面上离线工作,但是当涉及到iPad/iPhone时 - 忘记它吧。 – 2011-04-04 18:03:26

回答

0

我已经在我的离线应用程序发现主机页面(一个与它的清单标签)必须在清单文件以及(仅在自4.3 iPhone的iOS),这支持航空公司启动/离线模式。 也许这与你的问题有关。

我在iOS 4.3 (在4.3版本http://www.theregister.co.uk/2011/03/15/apple_ios_throttles_web_apps_on_home_screen/中查看更多内容)中遇到了问题,但是当我更新到4.3.2时,它再次运行。

+0

我尝试将主机页面添加到清单缓存中,但是(事后看来,这并不令人意外),Safari只要拉取清单,就会调用每个主机页面。 由于每个主机页面使用相同的资源引用相同的缓存清单,因此会导致对相同资源发出多个请求。 – Ruiwen 2011-04-24 16:26:08

0

我发现iOS 4.3.3有趣的情况。我有一个HTML5脱机应用程序,可以在iPad上运行iOS 4.2。但我将iPad更新到iOS 4.3.1,它不能再从主屏幕以离线模式运行。然而,当我看到“user593037”说它在iOS 4.3.2上工作时,我再次更新了我的iPad,并且今天在iOS 4.3.3上更新了它。

最初,我的离线应用程序仍然无法离线工作。所以我回到了最基本的离线网页,我用“cache.manifest”作为它的工作清单文件名。所以,看起来在iOS 4.3.3上,只有当用于缓存清单的文件名时,脱机缓存才会起作用。我甚至尝试使用cache2.manifest的文件名,它将无法脱机运行。

而且你还可以用“苹果移动网络应用能力的”设置为“yes”运行全屏。