2011-08-11 44 views
2

我們的應用程序被部署到物理設備上,所以起始頁面index.html位於設備的存儲區中,該文件將引用遠程託管的JavaScript文件和其他資源。也就是說,index.html本身不在我們的Web服務器中託管。在這種情況下可以使用html5應用程序緩存嗎?也就是說,html元素看起來像這樣:html5 appcache:遠程清單文件的工作?

<html manifest="http://remotehost.com/site.manifest"> 

這是否支持?或者,如果我們的Web服務器沒有託管index.html,是否有解決方法使其工作?

謝謝!

+0

有關這方面的消息嗎?看起來不可能。你使用phonegap嗎? – jujule

回答

4

檢查這個網站的基本要求和限制: http://appcachefacts.info/

有跡象表明,防止應用程序緩存當你的文件部署到設備的存儲工作的幾件事情:

  • Cross-Origin-Policy:你是引用另一個來源的清單文件 - >不允許
  • WebKit:我認爲您的WebView呈現index.html是WebKit支持的(iOs/Android)。我使用桌面PC上的Safari和Chrome進行了一些測試,並發現如果從http://localhostfile://... URL處提供index.html,即使清單遵守跨源策略,清單也會被忽略。這會打擊你,因爲在大多數情況下,設備上的本地部署index.html將由file://...提供服務。

因此,我想出了將清單下載到設備並在我的index.html中引用它的想法。這導致我沒能解決一些其他問題(我的設置是PhoneGap的,jQueryMobile,iOS版):

  • Mime-Type:你不能確保清單(從設備的存儲服務)被送達正確的mime類型標題但沒有它們,瀏覽器將忽略清單。
  • Manifest-URI:您無法(硬編碼)使用預定義的manifest="uri/to/appCacheManifest.manifest"屬性分發index.html文件(因爲您需要先從服務器上下載並保存,然後再知道此uri)。此外,您無法操縱通過PhoneGap應用程序(www文件夾)分發的資產以某種方式更改屬性。

到目前爲止,我無法獲得在PhoneGap WebView中工作的清單。我讀過一些文章,人們提到(iOS)WebView無法使用清單文件,但這是不正確的。如果您通過移動瀏覽器導航到Web應用程序並在主屏幕上保存書籤,則iOS會將此網站嵌入到WebView中。我用我的應用程序(由網絡服務器提供;不嵌入PhoneGap)和Manifest工作得很好。

這意味着如果您能夠將「坐在設備的存儲空間」中的文件移動到網絡服務器,並且您將本機WebView設置爲指向該位置,則清單應該可以正常工作。

+1

我遇到類似的問題,想知道你是否解決了這個問題。我有一個PhoneGap應用程序,包含設備上的所有資源。我希望能夠更新其中一些資產,但使用清單不會因交叉來源而起作用。 – speg

+0

我也是@speg運氣好嗎? – Jonathan