浏览器端的缓存localStorage应用
服务器传输大量信息到客户端(浏览器),即使有了服务器端缓存,用户每次打开web页面都需要请求服务器,传输大量信息,然后渲染。
主要存在网络传输成本,如果我们将大量的不太会变动的字典信息存储于localStorage,就能实现高性能的操作。
由于localStorage是永久的,自身没有过期时间,这对我们的字典变动存在一些不同步的问题,除了浏览器端用户手动点击清缓存,我打算给localStorage结合一个有效期来自动清除。
customLocalStorage.js
1 var __localStorage = { 2 set : function(key, value, mins){ 3 if(!window.localStorage){//浏览器ie8以下不支持,直接跳过 4 return; 5 } 6 if(typeof(mins) == 'undefined'){ 7 var item = { 8 data : value 9 }; 10 }else{ 11 var item = { 12 data : value, 13 endTime : new Date() . getTime() + mins * 60 * 1000 14 }; 15 } 16 localStorage.setItem(key, JSON.stringify(item)); 17 }, 18 get : function(key){ 19 if(!window.localStorage){//浏览器不支持,直接返回null 20 return null; 21 } 22 var val = localStorage.getItem(key); 23 if(!val) return null; 24 val = JSON.parse(val); 25 //判断是否设置过期时间 26 if(typeof(val.endTime) == 'undefined' || (typeof(val.endTime) != 'undefined' && val.endTime > new Date().getTime())){ 27 return val.data; 28 }else{ 29 localStorage.removeItem(key); 30 return null; 31 } 32 }, 33 enable : function () { 34 if(!window.localStorage){ 35 return false; 36 } 37 return true; 38 } 39 }
使用
var emps = __localStorage.get("emps"); if(emps==null){ $.ajax({ url: "/url", type: "post", async: true, success: function (json) { emps = json; //渲染 ........... __localStorage.set("emps", emps,15); }, error: function (jqXHR, textStatus, errorThrown) { mini.showTips({content: jqXHR.responseJSON.message, state: 'danger'}); } }); }else{ //渲染 ........ }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2014-01-10 NHibernate实战详解(二)映射配置与应用