2010-01-26 38 views
11

爲了節省客戶端下載時間和網絡使用量,是否可以使用HTML5的localStorage功能來存儲鏈接樣式表,JavaScript文件和二進制數據的內容(例如圖像),而不是每次都打到服務器?用於資產(樣式表,JavaScript,圖像等)的HTML5 localStorage

這樣做是否會讓事情變得複雜 - 因爲我認爲您必須通過JavaScript添加鏈接的資源,而不是僅僅使用scriptlink元素,爲那些未啓用JavaScript的用戶打開頁面)?除非在瀏覽器下載內容之前解析內容(使用HEAD請求檢查最後修改日期和其他標題)。

還是最好只是堅持304 Not ModifiedeTag標題?

回答

9

我覺得在這種情況下,你應該考慮離線緩存:

你可以在的localStorage或sessionStorage的同時存儲用戶輸入數據:

請勿使用globalStorage(不是標準)。

我已經寫下線的文章,請參閱:http://hacks.mozilla.org/2010/01/offline-web-applications/

這是關於離線,但這樣的機制可以用來提高你的web應用程序。

+0

您可以從緩存中受益而不使網站脫機嗎?或者更好的做法是把它留給瀏覽器去做樣式表和JavaScript(使用遠期標題,並設置一個304標題 - 儘管這會在PHP或ASP.NET上做額外的工作)。圖像佔用大量帶寬並且沒有更改,但仍然被下載(就好像瀏覽器緩存工作不正常) – SamWM 2010-01-26 17:27:14

+0

僅當您更新清單時(無論客戶端連接狀態如何)纔會提取文件。 – 2010-01-26 18:12:10

3

您可以base64編碼您的圖像/二進制數據,並將其作爲字符串存儲在localStorage中,使用base64網址在幾個瀏覽器中不起作用,因此它不是一個完美的解決方案。

CSS和js會很好,你可以將它們寫入頁面,或者使用base64 url​​。

我不會擔心這樣做會打破非JS用戶的網站,因爲JS被禁用,您無法訪問localStorage。

+2

沒有運行js的用戶應該會期望大多數網站都會崩潰。開發人員必須事先考慮是否值得支持這些努力。 – 2012-02-18 04:12:01

+0

我認爲,如果您要添加需要javascript的功能,您並不完全不贊成原始的回退行爲。 – garrow 2012-02-20 06:08:19

+4

是的,我都是優雅的退化,但有時候會涉及單獨的代碼,這是一個額外的努力,有時是不值得的,恕我直言。 IE6也是如此。 – 2012-02-20 08:46:03