File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed
data/blog/computer_principles Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -25,3 +25,42 @@ Cache(缓存)主要用于提高系统的响应速度。Cache的工作原理
25
25
- cache:例如,数据库查询结果可以存储在缓存中,以减少对数据库的访问频率。
26
26
27
27
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,缓存策略更佳 ` 。
You can’t perform that action at this time.
0 commit comments