缓存
强缓存
Cache-control
实现强缓存
//往响应头中写入需要缓存的时间
res.writeHead(200,{
'Cache-Control':'max-age=10'
});
Cache-control
有max-age、s-maxage、no-cache、no-store、private、public这六个属性。
-
max-age决定客户端资源被缓存多久。
-
s-maxage决定代理服务器缓存的时长。
-
no-cache表示是强制进行协商缓存。
-
no-store是表示禁止任何缓存策略。
-
public表示资源即可以被浏览器缓存也可以被代理服务器缓存。
-
private表示资源只能被浏览器缓存。
no-cache和no-store
no_cache是Cache-control
的一个属性。它并不像字面意思一样禁止缓存,实际上,no-cache的意思是强制进行协商缓存。如果某一资源的Cache-control
中设置了no-cache,那么该资源会直接跳过强缓存的校验,直接去服务器进行协商缓存。而no-store就是禁止所有的缓存策略了。
max-age和s-maxage
max-age表示的时间资源在客户端缓存的时长,而s-maxage表示的是资源在代理服务器可以缓存的时长。
在一般的项目架构中max-age就够用。
而s-maxage因为是代理服务端的缓存时长,他必须和上面说的public属性一起使用(public属性表示资源可以在代理服务器中缓存)。
注意,max-age和s-maxage并不互斥。他们可以一起使用。
Cache-control如何设置多个值呢?用逗号分割,如下↓
Cache-control:max-age=10000,s-maxage=200000,public
协商缓存
基于last-modified的协商缓存
基于last-modified的协商缓存 实现方式是:
-
首先需要在服务器端读出文件修改时间,
-
将读出来的修改时间赋给响应头的
last-modified
字段。 -
最后设置
Cache-control:no-cache