提升 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 应用程序更快、更高效。实施缓存服务是一项重要的优化技术,可以显着提高应用程序的性能。

相关内容

热门资讯

我在夜里听着风,可是你在喊我姓... 我在夜里听着风,可是你在喊我姓名,今晚的酒有点浓是什么歌名? “我在夜里听着风,可是你在喊岩槐晌我姓...
我有一个女同事,平时看起来挺低... 我有一个女同事,平时看起来挺低调的?只要她性格好,好相处即可她挺好。建议多多把注意力放在自己身上。不...
求一本现代鉴宝古玩类的异能小说... 求一本现代鉴宝古玩类的异能小说名字是《掏宝王》 作者 : 有一眼 贺青本只是一名普通...
求花姑子配乐? 求花姑子配乐?是不是“三生有约”
小橡树和苹果树的故事讲了什么道... 小橡树和苹果树的故事讲了什么道理?苹果树就像我们的父母。当我们年幼的时候,我们喜欢跟爸爸妈妈一起玩。...
“在天水检测正常,来西安检测超... “天水那边通知我们血铅检测结果33.78ug/L,来西安检测结果是441ug/L。”7月4日,陕西省...
广州一区推出疫苗减免政策 三类... 格隆汇7月5日|继天河区推出HPV疫苗减免政策后,越秀区在这个月也推出了疫苗减免政策。除了九价和二价...
不负韶华只争朝夕的意思 不负韶华只争朝夕的意思22只争取当下的成就,才能不辜负青春年华。指的是要珍惜一分一秒的时光,不辜负最...
车速17052km/h!罚20... 4日,有江苏网友在社交平台发文称收到一则超速罚单,“平均速度17052km/h,人生第一次开这么快,...
最新!台风“丹娜丝”路径有变!... 最新消息!4号台风“丹娜丝”路径出现转折预计将登陆我国天气大反转强风暴雨明天抵达厦门蓝色预警!台风“...