0
使用自助過期時間戳設置LocalStorage記錄時出現問題,以避免向我的服務器發送大量查詢。我有一個動態內容div:自行過期LocalStorage記錄
<div id="storage"><p>Dynamic content</p></div>
並且想將其內容添加到我的localStorage 5分鐘。如果此記錄不到5分鐘,我不想從服務器獲取內容,並從localStorage中獲取保存的內容。但是,如果它大於5分鐘,那麼localStorage記錄應該被刪除,新的內容應該從服務器中取出並保存爲新記錄。看下面我的jQuery代碼:
$(function() {
function now() {
return +new Date
}
var db = window.db = {
get: function (key) {
var entry = JSON.parse(localStorage.getItem(key) || "0");
if (!entry) return null;
if (entry.ttl && entry.ttl + entry.now < now()) {
localStorage.removeItem(key);
return null;
}
return entry.value;
},
set: function (key, value, ttl) {
localStorage.setItem(key, JSON.stringify({
ttl: ttl || 0,
now: now(),
value: value
}));
}
};
});
$(function() {
// Set Value with TTL of 50 Secionds using Milliseconds.
db.set("homeStorage", $("#storage").html(), 50000);
});
$(function() {
var contentsOfNews = db.get("homeStorage");
$("#storage").html(contentsOfNews);
});
目前它設置的內容每一次更新的內容。
請在這裏看到的jsfiddle:http://jsfiddle.net/owvtauuj/
只是嘗試手動更新的div#存儲的內容,明白我的意思。
'$(函數(){'的意思是 「當文檔準備好」。因爲它是準備只有一次,使用此一次。 – 2015-03-02 10:20:07
謝謝@JeremyThille能否請您更新我的jsfiddle所以我知道如何做到這一點 – qqruza 2015-03-02 10:21:28
好吧,我已經更新了它... HTTP:?//jsfiddle.net/owvtauuj/1/,但它只是一個建議,不是相關因爲你正在記錄'now'(作爲時間戳),爲什麼不直接比較下一個查詢的時間estamp到存儲在LocalStorage中的那個? – 2015-03-02 10:28:26