2011-03-26 110 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」運行全屏。