【转】前端缓存介绍

1 篇文章 0 订阅
1 篇文章 0 订阅

目录

1、一次网页浏览的过程
2、DNS,HTTP,Cookie缓存
3、HTTP缓存
4、HTML5中的缓存

1、一次网页浏览的过程

这里写图片描述

2、DNS解析

Domain Name Service
将域名转换为网络上的实际ip地址
这里写图片描述

浏览器DNS缓存

Chrome 为例:1000条,70s
chrome://net-internals/#dns
这里写图片描述

缓存失效

缓存条数超过上限

  • 列表内容
  • 超时
  • 手动清空
  • 重启浏览器
系统DNS缓存

查看:ipconfig /displaydns
缓存时间: MaxCacheEntryTtlLimit TTL
缓存失效:ipconfig /flushdns 或 修改host
这里写图片描述

3、HTTP缓存
  • 不缓存
  • 强缓存
  • 协商缓存
不缓存

浏览器每次发送接收一个完整的请求
适用于动态页面或接口

强缓存

不发送网络请求直接从缓存读取文件
适用于不常变化的静态文件
这里写图片描述

协商缓存

浏览器询问服务器本地缓存是否有更新
这里写图片描述

HTTP 1.0 协议

Expire:Mon, 27 Jun 2016 03:37:44 GMT
Last-Modified:Fri, 17 Jun 2016 07:32:46 GMT
这里写图片描述
If-Modified-Since:Fri, 17 Jun 2016 07:32:46 GMT
这里写图片描述

HTTP 1.1 协议

Cache-control:

  • max-age =604800
  • no-cache
  • no-store
    这里写图片描述
    ETag/If-None-Match
    这里写图片描述
    这里写图片描述

存储在浏览器的一段文本
会附到http请求中发送
JS可以对cookie读写
这里写图片描述
cookie的属性
Expires
Domain
Path
Secure
HttpOnly
这里写图片描述
Cookie的缺点
4K限制
Domain污染
HTTP头中无用信息增加
Cookie信息泄露

UserData

仅IE支持
XML文件存储

4、HTML5中的缓存

Application Cache
Localstorage & Sessionstorage
WebSQL
IndexedDB

Application Cache

缓存页面和页面内指定的静态资源,使其在无网络情况下也可以正常运行。

如何使用

定义一个缓存清单文件
在页面里指定清单文件
这里写图片描述
这里写图片描述
这里写图片描述

如何更新

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

与HTTP缓存的区别

这里写图片描述

Localstorage & Sessionstorage

Key-value形式存储
每个域名下可以存储5M内容
Localstorage永不过期,除非手动删除
Sessionstorage随浏览器关闭而结束
getItem
setItem
removeIte
key
clear

与cookie的对比

这里写图片描述

Web SQL

一个Html5环境下可以用Js执行CRUD的关系型Web数据库
openDatabase
Transaction
executeSql

IndexedDB

非关系型数据库
异步API
可以建立索引方便查询
支持事务
无大小限制
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端离线缓存可以通过HTML5的离线存储(Application Cache)来实现。该机制是基于一个manifest文件的缓存机制,通过在manifest文件中定义需要缓存的文件,浏览器会将这些文件保存在本地。当网络处于离线状态时,浏览器会使用离线存储的数据进行页面展示。这种机制主要适用于内容变动少、相对固定的场景下。 另外,还可以借助Service Worker和cacheStorage缓存来实现离线缓存。Service Worker是一种在浏览器后台运行的脚本,可以拦截网络请求并缓存响应,从而实现离线缓存cacheStorage是浏览器提供的API,用于管理缓存的存储空间。 在实际开发中,可以使用Workbox webpack Plugins等工具来简化离线缓存的配置和管理。这些工具可以帮助我们生成Service Worker脚本,并提供一些方便的API来管理缓存和离线状态。 总结起来,前端离线缓存可以通过HTML5的离线存储、Service Worker和cacheStorage缓存等技术来实现。这些技术可以提供离线访问和更好的用户体验。 #### 引用[.reference_title] - *1* *2* *3* [【万字长文】前端离线化/长缓存方案](https://blog.csdn.net/sinat_36521655/article/details/120051358)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值