前端常见的数据缓存方案及其实现细节_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
全局中部横幅
简书

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

AnyKnew

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

首页

《联合早报》是全球华文用户信任的媒体,每天即时为你提供新加坡、中国、东南亚、亚洲和国际新闻。从财经、体育、生活娱乐资讯到评论分析,帮助你掌握全球趋势。

微热点(微舆情)官方网站(wrd.cn)

微热点基于海量媒体数据,专注帮助政府、企业、媒体以及自媒体从业者,发现正在发生或潜在发生的全网热点,致力于打造热点发现-热点分析-传播效果评估-热点事件案例库的媒体传播大数据应用平台。

Google

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

实时统计。对每一个国家的人口时钟

任何国家目前的人口的实时统计。实时数据,对人口出生,死亡,净迁移和人口增长。

翱联旅游网

翱联旅游网是您一站式的旅行专家,致力于为您打造无与伦比的旅游体验。在这里,您将开启一段精彩纷呈的探索之旅。我们拥有海量的旅游资源,涵盖全球热门目的地以及小众秘境,无论是浪漫的海滨度假、神秘的古老遗迹、壮丽的山川湖泊,还是充满异域风情的城市漫步,翱联旅游网都能满足您的多元需求。

百度百科

百度百科是一部内容开放、自由的网络百科全书,旨在创造一个涵盖所有领域知识,服务所有互联网用户的中文知识性百科全书。在这里你可以参与词条编辑,分享贡献你的知识。

站长导航网

站长导航网系统是一个专业收录优质网站的网址导航平台,提供简洁高效的网络入口。免费提交收录,发现实用工具、设计资源、程序员必备站,打造您的专属上网主页