提升 Web 应用程序的性能:如何使用 JavaScript 编写缓存服务
创始人
2024-05-28 15:36:57
0

缓存是一种重要的优化技术,用于加速数据访问和降低服务器负载。缓存存储经常访问的数据,以便在需要时可以快速检索。在本文中,我们将探索如何使用简单的数据结构在 JavaScript 中编写缓存服务。

编码缓存服务的第一步是定义将用于访问缓存的接口。下面是使用键值存储的缓存服务的示例接口:

class  CacheService { constructor ( ) {} get ( key ) {} set ( key, value ) {} clear ( ) {} 
}

该get()方法检索与给定键关联的值,set()设置与键关联的值,并clear()从缓存中删除所有值。现在我们在实现接口的时候就可以使用各种存储来存储我们缓存的数据了。

一种方法是使用 JavaScript Map。Map是 JavaScript 中的内置数据结构,存储键值对。下面是使用缓存服务的示例实现Map:

class CacheService {constructor() {this.cache = new Map();}get(key) {return this.cache.get(key);}set(key, value) {this.cache.set(key, value);}clear() {this.cache.clear();}
}

该constructor()方法初始化一个空Map对象,该对象将用于存储缓存数据。

向缓存添加过期时间是一项重要的优化技术,有助于控制缓存大小。在此步骤中,我们将为缓存项添加过期时间,并在它们过期时将其从缓存中移除。

下面是包含过期时间的缓存服务的更新实现:

class CacheService {constructor() {this.cache = new Map();}get(key) {const cachedItem = this.cache.get(key);if (!cachedItem || cachedItem.expiresAt < Date.now()) {return null;}return cachedItem.value;}set(key, value, expiresInMs) {const expiresAt = Date.now() + expiresInMs;this.cache.set(key, { value, expiresAt });}clear() {this.cache.clear();}
}

该set()方法现在采用一个附加参数expiresInMs,它指定缓存项应过期的时间(以毫秒为单位)。该get()方法现在检查缓存项是否存在以及其过期时间是否已过。如果该项目已过期,则将其从缓存中删除并null返回。

下面是如何使用缓存服务:

// Create a new cache service instance
const cacheService = new CacheService();// Retrieve a value from the cache
const cachedValue = cacheService.get('myKey');// If the value is not found in the cache or has expired, it will return null
if (!cachedValue) {// Retrieve the value from the serverconst serverValue = fetch('https://example.com/myData').then(response => response.json()).then(data => {console.log(data);// Store the value in the cachecacheService.set('myKey', data, 5 * 60 * 1000);return data;});
} else {// Use the cached valueconsole.log(cachedValue);
}// Later clear the cache, if you need
cacheService.clear();

在此示例中,我们创建了缓存服务的新实例并从缓存中检索值。如果在缓存中找不到该值或已过期,我们会从服务器检索该值并将其存储在缓存中,有效期为 5 分钟,还可以使用 方法清除缓存clear()。

使用缓存服务,可以显着加快数据访问速度并减少服务器负载,从而使 Web 应用程序更快、更高效。实施缓存服务是一项重要的优化技术,可以显着提高应用程序的性能。

相关内容

热门资讯

江苏多个高速入口临时关闭! 转自:扬子晚报【江苏高速】省交通综合执法局:5月5日16:00,目前,全省高速公路总体运行平稳,通行...
五一假期14.67亿人次跨区域... 【#五一假期14.67亿人次跨区域流动#】5月5日,记者从交通运输部获悉,劳动节假期第5日,预计全社...
明天上班上学,北京逐渐转晴升温... 转自:北京日报客户端明天(6日)天气逐渐转晴,气温逐步回升,记得调整好闹钟,准备上班上学喽!预计周三...
传壳牌(SHEL.US)正探索... 据媒体援引知情人士消息报道,壳牌(SHEL.US)正在探索收购其竞争对手英国石油(BP.US)的可能...
吃粥、绘彩蛋,来海淀苏家坨体验... 转自:北京日报客户端5月5日,海淀区苏家坨镇梁家园村文化活动中心,千斤粥米熬成六大锅“百家粥”,邀村...
科思科技:5月5日召开董事会会... 科思科技(SH 688788,收盘价:56.5元)5月5日晚间发布公告称,公司第三届第二十一次董事会...
科思科技拟斥3000万至500... 2025年5月5日,深圳市科思科技股份有限公司召开第三届董事会第二十一次会议等,全票审议通过以集中竞...
康力电梯原实控人王友林逝世 配... 5月5日,康力电梯(002367)发布公告,公司控股股东、实际控制人因王友林逝世而发生变更。王友林于...
东信和平:关于公司董事辞职的公...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 证券代码:00201...
欣天科技5%以上股东薛枫拟减持... 欣天科技2025年5月6日公告,持股5%以上股东薛枫因个人资金需求拟减持不超3%股份。薛枫持有17,...
错峰游、国风游盛行,“网红城市... 转自:扬子晚报今年“五一”假期旅游市场活力四射,低线城市旅游消费加速释放,境内游、出境游双向火爆。途...
老凤祥:子公司与上海久事体育等... 人民财讯5月5日电,老凤祥(600612)5月5日晚间公告,公司下属子公司上海老凤祥有限公司与上海久...
软通动力股东CEL Bravo... 软通动力4月30日公告,股东CEL Bravo Limited因自身资金安排拟减持不超1%股份,涉资...
电连技术持股5%以上股东任俊江... 电连技术近日发布公告,持股5%以上股东任俊江因个人资金需求,计划减持公司股份。股东基本情况截至公告披...
五一返程车流高峰杀到!新疆这些... 5月5日,正值“五一”假期收官之日,自治区交通运输厅发布返程安全出行提示,提醒广大司乘人员,当前返程...
美的集团(000333.SZ)... 美的集团(000333.SZ)公告,公司截至2025年4月30日以集中竞价交易方式累计回购公司A股股...
剧痛!多地已出现蜈蚣!看到赶紧... 来源:厦门日报 “五一”假期 正是出行游玩的好时机 但放松享受的同时 一定小心别被它“亲”上祸从天降...
首届“巴丹杯”2025春季赛马... 转自:草原云5月3日,首届“巴丹杯”2025春季赛马赛驼大会在阿拉善右旗巴丹吉林沙漠旅游区的巴丹湖景...
南方多地需警惕雷暴大风或冰雹天... 近期,江南、华南和贵州等地多降水和强对流天气。今天(5月5日)午后到夜间,江南东南部、华南大部等地的...
泸天化回购进展:已回购2359... 泸天化于2025年4月30日发布回购公司股份进展公告,披露了截至该日的回购情况。回购方案回顾2024...