Skip to content

Commit a6b4403

Browse files
author
Yanbin Zhu
committed
feat(*): cache那章新增前端缓存内容
1 parent f6d240a commit a6b4403

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

data/blog/computer_principles/bufferAndCache.mdx

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,42 @@ Cache(缓存)主要用于提高系统的响应速度。Cache的工作原理
2525
- cache:例如,数据库查询结果可以存储在缓存中,以减少对数据库的访问频率。
2626

2727

28+
29+
# 前端缓存
30+
前端缓存 分 `强缓存``协商缓存`
31+
32+
1.强缓存
33+
34+
如图片,CSS文件等不常更改的资源,没有必要在 HTTP 响应中频繁携带,就会在 HTTP 响应里面添加一个响应头 `Cache-Control`:max-age=1200(即缓存有效时间为1200s)。这会让浏览器自动将该请求的资源`缓存到本地`,`二次请求`若是`没过期`,直接从`本地获取``不发送请求`
35+
36+
2.协商缓存
37+
38+
两种资源标识符
39+
40+
1.`Last-Modified`:资源上一次修改的时间
41+
42+
浏览器第一次请求资源时,服务端会返回资源和资源标识 last-Modified;
43+
44+
当浏览器下一次请求该资源时,会带上这个标识,请求头键名为:If-Modified-Since,键值为第一次访问时服务端返回的那个修改时间标识;
45+
46+
该请求发送到服务端之后,服务端会检查该值跟所请求资源的最近修改时间是否为一致:
47+
48+
(1)如果一致直接返回304
49+
50+
(2)如果不一致返回200 + 最新资源 + 最新的资源修改时间
51+
52+
53+
2.`ETag`:资源对应的唯一字符串
54+
55+
浏览器第一次请求资源时,服务端会返回资源和资源标识 ETag 字符串;
56+
57+
当浏览器下一次请求该资源时,会带上这个字符串,请求头的键名为:If-None-Match,键值为第一次访问时服务端返回的 ETag 字符串;
58+
59+
该请求发送到服务端之后,服务端会检查该值跟所请求资源的标识字符串是否一致:
60+
61+
(1)如果一致说明文件内容没有发生变化,直接返回304;
62+
63+
(2)如果不一致返回200 + 最新资源 + 最新的 ETag字符串。
64+
65+
66+
Last-Modified 和 ETag 比较 `优先使用 ETag`,Last-Modified 标识即使文件内容相同,但是只要修改时间发生变化,都会再次返回该资源,而 `ETag 可以判断出文件内容是否相同,相同则直接返回304,缓存策略更佳`

0 commit comments

Comments
 (0)