前端常见的数据缓存方案及其实现细节_javascript技巧

前端数据缓存机制是提升应用性能、减少网络请求、优化用户体验的关键技术手段。以下是前端常见的数据缓存方案及其实现细节,涵盖浏览器缓存、本地存储、内存缓存等多种策略:

通过 HTTP 协议头控制缓存,适用于静态资源(如 JS、CSS、图片)和接口响应

Cache-Control: max-age=3600 # 资源有效期 1 小时(优先级高)Expires: Wed, 21 Oct 2024 07:28:00 GMT # 过期时间(HTTP/1.0)

# 服务器返回标识ETag: "33a64df551425fcc55e4d42a148795d9"Last-Modified: Wed, 21 Oct 2024 07:28:00 GMT# 浏览器请求时携带标识If-None-Match: "33a64df551425fcc55e4d42a148795d9"If-Modified-Since: Wed, 21 Oct 2024 07:28:00 GMT

适用于存储结构化数据,容量约 5~10MB,分为 localStoragesessionStorage

// 存储数据(注意:只能存字符串)localStorage.setItem('user', JSON.stringify({ name: 'Alice' }));// 读取数据const user = JSON.parse(localStorage.getItem('user'));// 删除数据localStorage.removeItem('user');

适用于存储大量结构化数据(支持索引、事务),容量可达数百 MB。

// 打开数据库const request = indexedDB.open('myDB', 1);request.onupgradeneeded = (event) => { const db = event.target.result; const store = db.createObjectStore('apiCache', { keyPath: 'url' }); store.createIndex('timestamp', 'timestamp', { unique: false });};// 存储数据function saveToIndexedDB(url, data) { const transaction = db.transaction('apiCache', 'readwrite'); const store = transaction.objectStore('apiCache'); store.put({ url, data, timestamp: Date.now() });}// 查询数据async function getFromIndexedDB(url) { return new Promise((resolve) => { const transaction = db.transaction('apiCache', 'readonly'); const store = transaction.objectStore('apiCache'); const request = store.get(url); request.onsuccess = (e) => resolve(e.target.result?.data); });}

适用于单页应用(SPA)中短期数据缓存,随页面刷新失效。

实现离线缓存和网络请求拦截,适合 PWA 应用。

import { useQuery } from 'react-query';function UserProfile() { const { data } = useQuery('userData', () => fetch('/api/user').then(res => res.json()), { staleTime: 5 * 60 * 1000, // 5分钟缓存有效期 cacheTime: 30 * 60 * 1000 // 30分钟保留时间 }); // ...}

import useSWR from 'swr';function Profile() { const { data } = useSWR('/api/user', fetcher, { revalidateOnFocus: false, // 窗口聚焦时不刷新 dedupingInterval: 60000 // 60秒内相同请求去重 }); // ...}

通过合理设计缓存机制,可显著提升前端性能,但在实际应用中需平衡以下关系:✅ 新鲜度 vs 性能存储空间 vs 用户体验开发成本 vs 维护成本

到此这篇关于前端常见的数据缓存方案及其实现细节的文章就介绍到这了,更多相关前端数据缓存机制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


本文地址: https://www.earthnavs.com/jishuwz/c4a78b20b8930c4afaaa.html
全局中部横幅
今日头条

该站点未添加描述description...

360游戏中心,我创造你快乐

360游戏中心是超好玩的的免费安全游戏平台,为亿万360玩家提供各种新鲜好玩的免费游戏及超值游戏礼包福利-360游戏中心,我创造你快乐!

爱测

爱测-测试人社区隶属于测吧(北京)科技有限公司,是一个软件测试爱好者的技术交流社区,主要做:软件测试、软件测试入门、自动化测试、性能测试、测试开发、接口测试、测试开发培训、自动化测试培训、python自动化测试、java自动化测试、测试教程、全栈测试、测试面试题、appium、selenium、jmeter、jenkins、loadrunner、测试平台、开源测试。关于霍格沃兹测试开发学社霍格沃兹测试开发学社,隶属于测吧(北京)科技有限公司,是一个面向软件测试爱好者的技术交流社区,聚焦软件测试、软件测试入门、自动化测试、性能测试、接口测试、测试开发、全栈测试,以及人工智能测试(AI测试)等方向。学社内容覆盖Python自动化测试、Java自动化测试、Web自动化、App自动化(Appium)、Selenium、JMeter、LoadRunner、Jenkins等测试技术与工具,同时关注AI在测试设计、用例生成、自动化执行、质量分析与测试平台建设中的应用,以及开源测试相关实践。在人才培养方面,学社建设并运营高校测试实训平台,组织“火焰杯”软件测试相关技术赛事,探索面向高校学员的实践型培养模式,包括先学习、就业后付款等能力导向路径。此外,学社还提供面向测试工程师的能力提升支持,包括名企大厂1v1私教服务,用于结合个人背景的定向指导与工程能力提升。

简书

简书是一个优质的创作社区,在这里,你可以任性地创作,一篇短文、一张照片、一首诗、一幅画……我们相信,每个人都是生活中的艺术家,有着无穷的创造力。

知乎圆桌

知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于2011年1月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类、在诸多领域具有关键影响力的知识分享社区和创作者聚集的原创内容平台,建立起了以社区驱动的内容变现商业模式。

海外产品使用

该站点未添加描述description...

打印机驱动,打印机驱动下载

打印机驱动网提供打印机驱动下载,为您安装和使用打印机驱动提供帮助,解决您在打印机驱动使用过程中的困惑。

Home

Open-sourceWindowsandOfficeactivatorfeaturingHWID,Ohook,TSforge,KMS38,andOnlineKMSactivationmethods,alongwithadvancedtroubleshooting.

金泉翱联网

金泉翱联网精心聚合最新的网站相关知识信息,全力打造出一个全新的网站平台资源整合体。在这里,为您提供全网范围内各类问题的解答,还有丰富的天气资讯、文学辞典、历史知识以及实用的生活小常识等内容。

首页秒收录

首页秒收录,站长导航,网址导航,网站导航,网站大全,网站目录,网站分类,分类目录,网站收录,自动收录,秒收录