2010-12-06 75 views
5

我想使用localStorage在主要用於移動設備(即帶寬限制)的Web應用中「緩存」一些JS和CSS文件。我想它的工作是這樣的:使用localStorage保存整個文件

  1. 該頁面加載一個小setup.js包含的代碼,檢查localStorage,看是否bigScriptFile.js已預存。
    1. 如果沒有存儲,bigScriptFile.js被下載並存儲下次訪問。
    2. 如果已經存儲,然後bigScriptFiles.jslocalStorage讀取並加載/運行,如果它被下載像一個正常的文件(即<script src="http://example.com/bigScriptFile.js"></script>

我不知道怎麼什麼做的是步驟1.1 - 存儲JS文件。 (我知道,我只能存儲字符串localStorage,我知道如何使用JSON.stringify()。)

當然,它並不像使用轉義()一樣簡單:
localStorage.setItem('bigScriptFile', escape('myJScode'))存儲,並
unescape(localStorage.getItem['bigScriptFile'])檢索

即使這很容易,我該如何使用JS將bigScriptFile.js的內容作爲字符串來獲取?也許通過對返回內容的PHP腳本進行ajax調用?

回答

11

您應該將正確的緩存標頭放在js文件中,或者查看HTML5 cache manifest

W3C specification

+0

如果我理解正確的話,清單隻控制在瀏覽器的緩存文件。如果清除緩存,則文件必須重新下載。由於此應用主要用於在iOS設備上運行,其中包括Safari中打開的頁面有時會刷新以回收內存,因此我正在尋找更持久的東西。我意識到這意味着我需要一種方法來檢查`localStorage`版本是否過時(如果是這樣,故意下載並存儲新版本),但這不應該太難。我更關心如何將整個JS文件可靠地存儲爲字符串 – craigpatik 2010-12-06 18:47:12

+1

不,緩存清單中的文件存儲爲脫機/稍後使用。您可以關閉瀏覽器,並且正在重新下載的唯一文件是緩存清單文件。我保留這樣的權利,我不知道這是如何在Safari中實現的IOS – 2010-12-06 23:03:11