在做一個網站時,起初直接就是從服務器獲取數據進行交互,沒有用一些本地緩存做優化,項目做下來就特別卡,並且對服務器造成了很大的壓力,經過請教,查詢,找到這樣一個定時緩存的例子。html5定時緩存,從數據庫獲取到數據,如果不是實時變化的可以緩存到本地,隔一段時間后再次更新,可以提高網站瀏覽速度,也可以減少服務器壓力。各位看官在做一些項目優化是可以試着應用上這個緩存的功能。
1 var MyLocalStorage = { 2 Cache: { 3 /** 4 * 總容量5M 5 * 存入緩存,支持字符串類型、json對象的存儲 6 * 頁面關閉后依然有效 ie7+都有效 7 * @param key 緩存key 8 * @param stringVal 9 * @time 數字 緩存有效時間(秒) 默認60s 10 * 注:localStorage 方法存儲的數據沒有時間限制。第二天、第二周或下一年之后,數據依然可用。不能控制緩存時間,故此擴展 11 * */ 12 put: function(key, stringVal, time) { 13 try { 14 if(!localStorage) { 15 return false; 16 } 17 if(!time || isNaN(time)) { 18 time = 60; 19 } 20 var cacheExpireDate = (new Date() - 1) + time * 1000; 21 var cacheVal = { 22 val: stringVal, 23 exp: cacheExpireDate 24 }; 25 localStorage.setItem(key, JSON.stringify(cacheVal)); //存入緩存值 26 } catch(e) {} 27 }, 28 /**獲取緩存*/ 29 get: function(key) { 30 try { 31 if(!localStorage) { 32 return false; 33 } 34 var cacheVal = localStorage.getItem(key); 35 var result = JSON.parse(cacheVal); 36 var now = new Date() - 1; 37 if(!result) { 38 return null; 39 } //緩存不存在 40 if(now > result.exp) { //緩存過期 41 this.remove(key); 42 return ""; 43 } 44 return result.val; 45 } catch(e) { 46 this.remove(key); 47 return null; 48 } 49 }, 50 /**移除緩存,一般情況不手動調用,緩存過期自動調用*/ 51 remove: function(key) { 52 if(!localStorage) { 53 return false; 54 } 55 localStorage.removeItem(key); 56 }, 57 /**清空所有緩存*/ 58 clear: function() { 59 if(!localStorage) { 60 return false; 61 } 62 localStorage.clear(); 63 } 64 } //end Cache 65 } 66
//調用緩存函數 67 function getHotList() { 68 try { 69 var cache = MyLocalStorage.Cache.get("cacheKey"); 70 if(cache == null) { 71 $.get("php/timeUpdata.php", function(data) { 72 // result = JSON.parse(data);//字符串轉josn串 73 MyLocalStorage.Cache.put("cacheKey", data, 2 * 60); 74 }); 75 } 76 } catch(e) {} 77 } 78 getHotList();
如果緩存的數據量比較大的話,就需要將數據轉換為string格式。