2011-09-27 60 views
2

大師的SO緩存清單彌補我的應用程序時在線

我想玩CACHE MANIFEST/HTML5。我的應用程序是沉重的JS,並建立在jquery/jquerymobile上。

這是什麼我的清單看起來像

CACHE MANIFEST 
FALLBACK: 
/
NETWORK: 
* 
CACHE: 
/css/style.css 
/js/jquery.js 

但不知何故的摘錄,應用程序不會加載在第一時間本身和整個應用程序分解的文件。

  • 我的格式錯了嗎?
  • 我是否永遠不會將JS加載到緩存中?
  • 我應該如何處理這種不同的問題,以便始終首先檢查網絡,如果有任何不可用的情況,只加載緩存中可用的東西?

謝謝。

回答

0

我得到這個工作,以刷新緩存的唯一方法就是緩存聲明重命名的提交數量或時間戳,清單文件,並切換到

<html manifest='mymanifest382330.manifest'>

我做的這部分我建立。

+0

只需再次閱讀您的評論 - 不要以爲你正在談論我面臨的同樣的問題。不過謝謝。 – iUsable

+0

你不應該做任何像重命名清單那樣激烈的事情。 [深入研究HTML5](http://diveintohtml5.org/offline.html)解釋了緩存更新如何工作,並建議每當您更改站點時,都會使用包含修訂號的註釋更新緩存清單。這迫使瀏覽器請求所有文件的新版本。這應該比重命名文件和更新每個HTML頁面更容易。 – mgiuca

2

我試着用你的緩存清單的一個簡單的頁面,它對我來說工作得很好,所以我不確定問題是什麼。但是,

  1. 是的,格式有問題。 FALLBACK部分中的條目需要有兩個部分:一個模式和一個URL。這表示「如果與該模式匹配的任何頁面不能脫機使用,則顯示URL(將被緩存)」。這個(as shown here)的主要例子是「/ /offline.html」,這意味着「對於所有頁面,如果我們離線並且它們沒有被緩存,則改爲顯示/offline.html」。但是,我不認爲這是你的問題的根源,因爲我用你的確切清單測試它,它仍然有效。
  2. 沒有什麼特別的JS文件。將它們加載到緩存中應該沒問題。
  3. 我不明白第三個問題。這裏可能有兩個目標:a)如何在返回緩存之前先檢查是否有可用的在線文件的新版本,以及b)如何檢查網絡以查看是否存在未緩存的文件,如果我們處於脫機狀態,請回退到錯誤頁面。 (a)的答案是,一旦打開了緩存清單,事情就會有很大的不同。它會從來沒有檢查文件的新版本,除非還有一個新版本的清單。因此,無論何時更改任何文件,您都必須始終更新清單。 (b)的答案是FALLBACK部分。

我們看看Dive Into HTML5在這個優秀的章節,特別是部分‘調試的藝術,又名‘殺了我!殺了我吧!’’這也解釋瞭如何清單更新。

此外,我不認爲我們已經接近你的問題的肉,因爲它不清楚你的意思是「該應用程序不會第一次加載文件」。哪些文件不加載?刷新後它們是否正確加載?等等。

+0

另請注意,Chrome/Chromium瀏覽器會顯示更多關於此的詳細信息。轉到開發人員工具並在Resources下,您可以轉到Application Cache並找到您的服務器。它會告訴你緩存中的每個資源,以及什麼類型的資源(主,清單,顯式等)。此外,在網絡下,您將能夠看到它是從緩存還是從網絡中提取資源。 – mgiuca

相關問題