常见缓存介绍(上)

作者: 白云飞 分类: web优化,缓存技术 发布时间: 2018-11-26 22:36 阅读:

一、页面缓存
1、离线存储
html的meta上增加 manifset 标签,并指定缓存的 名字,例如:

<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>

这里指 离线存储的是名字是叫 demo,存储的文件有类似于如下的 内容:

CACHE MANIFEST
/theme.css
/logo.gif
/main.js

NETWORK:
login.asp
FALLBACK:
/html5/ /404.html

>这个技术不是只要设置了 浏览器的标识就可以使用的,还需要配合服务器的使用。
以 nginx 为例子

mime.types

加入

text/cache-manifest mf manifest

打开 f12 在浏览器的 application cache就可以看到离线的网站页面数据。

更新机制:

有三种方式更新manifest缓存:
1、用户清空浏览器缓存;
2、manifest文件被修改,哪怕是注释(所以可以通过修改注释来更新文件)
3、由程序来更新

2、本地存储

localstorage 系列函数接口

二、浏览器缓存

服务器设置, expires 的http头,告诉客户端缓存多久的数据。客户端每次刷新之后,都会向服务端请求资源,如果未跟新的资源,服务端会直接响应 304-Not Modified来应答。

http 1.1 加入了 e-tag 机制,每次请求,判断e-tag的有效性。

三、APP上的缓存

app上可以通过 文本、内存、sqlite本地数据库这种机制来缓存数据。ios有很棒的图片缓存框架。
> SDW ebImage

四、网络中的缓存

1、web代理缓存
一般指 web正向代理。用户访问,web代理判断其上已经是最新的数据,则不会向后端服务器发送请求,而是直接返回用户需求的资源,否则会向后端发起请求,并更新本地。
> 比较流行的web缓存 Squid

2、边缘缓存
>如过反向代理服务器能够做到和用户来自同一个网络,那么用户访问反向代理服务器,就会得到很高质量的响应速度,所以可以将这样的反向代理缓存称为边缘缓存 。
边缘缓存主要靠近用户一侧,可以处理来自不同用户的请求,主要为用户提供静态内容,以减少应用服务器的介入。

其中典型的商业化服务就是CDN

cdn 一般会根据http头中的 cache-control:max-age 字段来设置 cdn 边缘节点的数据缓存时间,并在用户访问的时候,判断该节点缓存的数据是否已经过期,若过期,则会向源站请求新的数据,跟新本地。否则直接返回。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!