启发式缓存和本地存储缓存

启发式缓存详解

当服务器响应中没有包含 Expires、Cache-Control: max-age 或 Cache-Control:s-maxage 时,浏览器会采用一个启发式的算法来确定缓存的时间。

1. 启发式缓存的计算方法

通常,启发式缓存会根据响应头中的 Date 和 Last-Modified 之间的时间差来计算缓存时间。

计算公式: 缓存时间 = (Date - Last-Modified) * 0.1

例如,如果 Date 是当前时间,Last-Modified 是 10 天前,那么启发式缓存的有效期就是 1 天。

2. 启发式缓存的应用

启发式缓存主要用于那些没有明确指定缓存策略的资源。它是浏览器的一种兜底策略,为没有设置缓存策略的资源提供一定的缓存能力。

3. 启发式缓存的优缺点

优点:

  • 为没有明确缓存策略的资源提供缓存能力
  • 减少了对服务器的请求次数

缺点:

  • 缓存时间不精确,可能导致资源更新不及时
  • 不同浏览器的实现可能不同,缓存行为不可控

本地存储缓存详解

本地存储缓存是指在客户端(如浏览器、移动应用等)本地保存数据的一种机制。它可以提高应用程序的性能和用户体验,减少对服务器的请求,并支持离线访问等功能。本地存储缓存主要包括以下几种技术:

1. Web Storage

是 HTML5 提供的本地存储方案,包括 localStorage 和 sessionStorage 两种机制:

1.1 localStorage

localStorage 是一种持久化的本地存储,数据永远不会过期,除非被明确删除。

特点:

  • 容量较大,通常为 5MB
  • 数据在相同域名下的所有页面间共享
  • 只能存储字符串,需要手动序列化和反序列化

使用示例:

// 存储数据
localStorage.setItem('username', 'John');// 获取数据
const username = localStorage.getItem('username');// 删除数据
localStorage.removeItem('username');// 清空所有数据
localStorage.clear();

1.2 sessionStorage

sessionStorage 类似于 localStorage,但数据只在当前会话(窗口或标签页)中有效,关闭窗口后数据会被清除。

特点:

  • 容量通常为 5MB
  • 数据只在同一个窗口(或标签页)的同源页面间共享
  • 只能存储字符串

使用方法与 localStorage 相同。
Web Storage 的优点:

  • 简单易用
  • 存储容量较大(通常为5MB左右)
  • 可以存储字符串类型的数据

缺点:

  • 只能存储字符串,复杂数据结构需要手动序列化和反序列化
  • 同步操作,可能会阻塞主线程
  • 不支持索引和复杂查询

2. IndexedDB

IndexedDB 是一个低级 API,用于客户端存储大量结构化数据。它可以存储更复杂的数据结构,如 JavaScript 对象。

特点:

  • 可以存储大量数据
  • 支持索引,可以高效检索
  • 支持事务,保证数据一致性
  • 异步 API,不会阻塞主线程

3. Cache API

Cache API 是一种用于存储网络请求和响应的 API,主要用于实现离线 Web 应用和提高性能。它通常与 Service Workers 结合使用。

主要特点:

  • 可以缓存网络请求和响应
  • 支持离线访问
  • 可以精细控制缓存策略

关注微信公众号温暖前端,不定期分享前端知识点和前端资料↓↓↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】01背包

算法-01背包 前置知识 DP 思路 01背包一般分为两种,不妨叫做价值01背包和判断01背包。 价值01背包 01背包问题是这样的一类问题:给定一个背包的容量 m m m 和 n n n 个物品,每个物品有重量 w w w 和价值 v v v,求不超过背…

Linux命令更新-文本处理grep

简介 grep命令是Linux系统中用于查找文本文件内容的实用工具。它可以根据指定的模式在文件中搜索文本,并显示匹配的行。grep命令功能强大,易于使用,是运维人员必备的工具之一。 命令格式 grep命令的基本格式如下: grep [选项] …

基于Windows系统和linux系统,实现samba文件共享服务,

1.设置IP地址: vim /etc/sysconfig/network-scripts/ifcfg-ens33 2.关闭防火墙和selinux [roots ~]# systemctl stop firewalld [roots ~]# systemctl disable firewalld [roots ~]# vim /etc/selinux/config [roots ~]# setenforce 0 [roots ~]# 3.重启网络服…

Photoshop橡皮擦工具

Photoshop(简称PS)中的橡皮擦工具是图像编辑中不可或缺的一部分,它主要用于擦除图像中的特定区域,让图像编辑变得更加灵活和高效。本教程将详细讲解橡皮擦工具及其变体(背景橡皮擦工具和魔术橡皮擦工具)的使…

Adobe国际认证详解-职业发展规划指南

Adobe国际认证,又称为Adobe Certified Professional(简称ACP),是Adobe公司CEO签发的权威国际认证体系。这一认证体系基于Adobe核心技术及岗位实际应用操作能力的测评,旨在为用户提供创意软件的专业认证。 Adobe国际认证…

设计分享—国外医疗行业界面设计

医疗诊断界面是一个直观且信息丰富的数字平台,它集成了患者基本信息、病史记录、当前症状描述、检查结果展示以及智能诊断建议等功能于一体。 界面设计简洁明了,便于医生快速浏览关键信息,同时利用先进的算法辅助医生进行精准诊断&#xff0…

2025湾区国际智慧档案产业展览会_广州站

2025湾区国际智慧档案产业展览会暨2025中国智慧档案产业发展论坛 时间:2025年4月10-12日 地点:琶洲广州国际采购中心展览馆 主办单位:广州市档案行业协会 韩山师范档案产业学院 广东省现代办公设备协会 广州市现代办设备行业商会 支…

dou dian滑块captchaBody

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言(lianxi a…

WHAT - React Context 两层组件的优化机制

目录 一、Context二、分离逻辑和视图三、优化性能示例代码解释 一、Context 官方文档:https://react.dev/learn/passing-data-deeply-with-context 二、分离逻辑和视图 在 React 中使用两层组件来使用 Context 的原因主要是为了分离逻辑和视图,并且更…

最短路径 | 743. 网络延迟时间之 Dijkstra 算法和 Floyd 算法

目录 1 基于 Dijkstra 算法1.1 代码说明1.2 完整代码 2 基于 Floyd 算法2.1 代码说明2.2 完整代码 前言:我在做「399. 除法求值」时,看到了基于 Floyd 算法的解决方案,突然想起来自己还没有做过最短路径相关的题。因此找来了「743. 网络…

【黑马java基础】特殊文件,日志

目录 特殊文件:Properties属性文件特点、作用使用Properties读取属性文件里的键值对数据使用properties把键值对数据写到属性文件中去案例 特殊文件:XML文件概述读取XML文件中的数据把数据写出到XML文件中去补充知识:约束XML文件的编写[了解]…

HarmonyOS 本地真机运行

目录 官网地址 1.开发工具设置签名 2.手机开启开发者模式 3.使用USB连接方式 4.使用无线调试连接方式 5.常见的问题 官网地址 使用真机运行应用 使用本地真机运行应用/服务 1.开发工具设置签名 官网应用/服务签名 1.左上角文件--项目结构-勾选自动生成签名-Sign in登录 2…

麦田物语第十二天

系列文章目录 麦田物语第十二天(鸽了两天,今天继续) 文章目录 系列文章目录一、实现拖拽物品交换数据和在地图上生成物品二、制作 ItemTooltip 的 UI1.ItemTooltip的组成以及UI效果展示2.Layout Group-Vertical Layout Group3.Content Size Fitter一、实现拖拽物品交换数据…

Apache2服务介绍

apache2 安装使用配置web访问配置虚拟主机配置代理正向代理反向代理 官网 互联网上排名第一的 HTTP 服务器,Apache HTTP 服务器项目致力于开发和维护适用于现代操作系统(包括 UNIX 和 Windows)的开源 HTTP 服务器。该项目的目标是提供安全、…

【译】设计已死

文章概括: 本文探讨了人工智能(AI)的崛起如何可能使设计师甚至设计本身变得过时。作者借用尼采的名言“上帝已死”,引出设计在AI时代面临的困境,并分析了 AI 对设计行业的深远影响。 思维导图: 人类创造的…

GPT模型为什么能生成有意义的文本

GPT模型的底层,其实是谷歌团队推出的Transformer模型。但是在GPT-3出现之前,大家一直对它没有多少了解。直到它的参数数量突破1750亿个的时候,它才建立起一个庞大的神经网络,这个神经网络最突出的特点是大数据、大模型和大计算。其…

书生浦语多模态简述——学习笔记

多模态学习概念 多模态它是研究异构且相互连接数据的科学。它涵盖了从原始的器官信号到抽象概念的多种模态。 比如说我们语音和语言是我们理解人类交流的关键模态,而情感和图像就为我们提供了对环境和对象的感知,通过分析这些模态,我们就可…

技术成神之路:设计模式(九)观察者模式

介绍 观察者模式(Observer Pattern)是一种行为设计模式。它允许一个对象(称为主题或可观察者)来监视并通知一组依赖于这个对象的其他对象(称为观察者),以便在主题状态发生变化时自动更新观察者的…

Python中高效处理大数据的几种方法

随着数据量的爆炸性增长,如何在Python中高效地处理大数据成为了许多开发者和数据科学家的关注焦点。Python以其简洁的语法和丰富的库支持,在数据处理领域占据了重要地位。本文将介绍几种在Python中高效处理大数据的常用方法。 目录 1. 使用Pandas进行数…

双向链表(C语言版)

1. 双向链表的结构 注意:这里的“带头”跟单链表的“头结点”是两个概念,实际上在单链表阶段称呼不太严谨,但是为了更好地理解就直接称为单链表的头结点。带头链表里的头结点,实际为“哨兵位”,哨兵位结点不存储任何有…