研究html5也有一段時間了,最近正在看看它的離線存儲功能,也就是能通過manifest文件將需要進行本地緩存的頁面或文件加入到清單列表中,首先來看看我的定義
為了照顧不是很了解的同學,我還是來先解釋一下吧,首先:
1 CACHE MANIFEST 這個是必須的,即聲明或定義(必須);
2 注釋 這個其實可寫可不寫,但是當你改了頁面文件或資源文件時,想要頁面及時顯示,必須得改變manifest文件內容才能辦到,所以嘛~你懂的,最好寫一個version;
3 CACHE: 即聲明以下列表均為需要緩存的資源,這個標識符可寫可不寫,因為不寫的話,這些資源也會認為是需要CACHE的;其實還有兩個標識符,一個是"NETWORK :"、另一個是“FALLBACK”;“NETWORK:”下的資源列表表示需要進行網絡訪問的,“FALLBACK:”下的資源列表表示當該資源找不到時如何處理;(例如: /xxx.html /404.html)
4 這些資源名稱代表我們希望將其進行本地緩存的列表信息;
好了,說到這里基本定義差不多了,那么我今天想說的問題是,我定義了一個需要緩存的頁面Index.html,然后呢,在想讓該頁面進行離線緩存,之后我便動手將Index.html加入到manifest中,如圖:
現在問題來了,刷新了瀏覽器,發現在頁面中引用的樣式及腳本全都找不到了:
當時我就震精了~~神馬情況,后來一想,也許是因為引用的絕對路徑,然后由於在manifest中只加入了index.html導致資源文件沒有下載到本地進行存儲,所以重新改了一下Index.html中的資源引用:
之后改變manifest中的Version,刷新,發現依然無效..我擦~這又是神馬情況,為什么外部引用資源在有url地址的情況下還是無法訪問?!
看了看Chrome調試工具里的信息,突然恍然大悟~~

所謂離線存儲當然是TMD,將加載過的頁面或資源放入本地,然后不通過IIS或者apache等服務器來進行顯示了..難怪為何就算加入資源的完整url也無法顯示的原因了.這時就算您將IIS或apache給關閉,該頁面照樣能顯示;所以想要資源文件也能訪問,也得將資源文件加入manifest清單中:
ps:(這是最后完整的manifest清單)
好了,這里也是我近研究離線存儲以來發現的一個比較有趣的問題。 歡迎大家討論及拍磚~
