首页 > web前端 > js教程 > 正文

提升性能:Web 和移动设备的基本缓存策略

PHPz
发布: 2024-07-17 06:23:26
原创
1175 人浏览过

介绍

缓存是一个游戏规则改变者,可以提高网络和移动应用程序的速度和响应能力。在本博客中,我们将探索前端应用程序的基本缓存策略,解决大数据处理问题,并深入研究后向/前向 (B/F) 缓存的复杂性。

前端应用程序的关键缓存策略

浏览器缓存

浏览器缓存利用浏览器在本地存储 Web 资源副本的能力,减少加载时间和服务器请求。以下是一些关键方面:

  • Cache-Control:此 HTTP 标头规定缓存策略。例如,Cache-Control: max-age=3600 告诉浏览器将资源缓存 3600 秒。

  • Expires:此标头指定缓存资源的确切到期日期/时间。它经常与 Cache-Control 一起使用。

  • ETag:ETag 标头为资源版本提供唯一标识符。当资源发生变化时,其 ETag 也会发生变化,从而实现高效的缓存验证。

Cache-Control: public, max-age=86400
Expires: Wed, 21 Oct 2024 07:28:00 GMT
ETag: "33a64df5"
登录后复制

服务人员

Service Workers 是在后台运行的脚本,提供高级缓存功能。它们可以拦截网络请求并提供缓存的响应,甚至允许离线访问。

  • 缓存优先:如果可用,则从缓存中提供服务;如果没有,则从网络获取。

  • Network First:先从网络获取;如果网络不可用,则从缓存中提供服务。

  • Stale-While-Revalidate:从缓存提供服务,并在后台同时获取和更新缓存。

self.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request).then(response => {
      return response || fetch(event.request);
    })
  );
});
登录后复制

本地存储和 IndexedDB

本地存储和 IndexedDB 是基于浏览器的存储解决方案,用于在客户端持久保存数据。

  • 本地存储:非常适合将少量数据存储为键值对。它是同步的,存储限制约为 5MB。

  • IndexedDB:适合存储大量结构化数据。它支持事务和复杂查询,非常适合处理更大量、更复杂的数据。

例子

本地存储
localStorage.setItem('key', 'value');
let value = localStorage.getItem('key');
登录后复制
索引数据库
let request = indexedDB.open('database', 1);
request.onupgradeneeded = event => {
  let db = event.target.result;
  db.createObjectStore('store', { keyPath: 'id' });
};
登录后复制

浏览器本身有一些缓存技术,这里是其中之一。

深入研究后向/前向 (B/F) 缓存

什么是 B/F 缓存?

B/F 缓存是指浏览器将网页状态存储在浏览器历史记录中的机制,使用户能够来回导航而无需重新加载整个页面。

大多数浏览器都有它们,您可以从检查选项卡中探索它

Inspect Tab of Chrome

B/F 缓存如何工作

  • 页面缓存:浏览器存储页面的完整状态,包括 DOM、JavaScript 上下文和内存数据。

  • BFCache:现代浏览器(如 Chrome 和 Firefox)使用 BFCache 将页面状态保留在内存中,从而允许即时导航。

B/F 缓存的好处

  • 更快的导航:使用浏览器的后退和前进按钮时即时加载页面。

  • 改进的用户体验:无缝过渡增强了整体用户体验。

  • 减少服务器负载:随着页面状态的存储和重用,对服务器的请求减少。

结论

实施高效的缓存策略可以显着提高 Web 和移动应用程序的性能。从浏览器缓存和服务工作人员到处理大数据和利用 B/F 缓存,这些技术可确保您的应用程序快速、响应灵敏且用户友好。立即开始利用这些策略来彻底改变您的应用程序的性能!

希望您从这个博客中学到了新东西。关注我,获取简短、清晰、深刻、独特的技术博客。谢谢!

以上是提升性能:Web 和移动设备的基本缓存策略的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板