zhangzheng-zz / blog

1 stars 0 forks source link

mac nginx http & 缓存配置相关 #22

Open zhangzheng-zz opened 2 years ago

zhangzheng-zz commented 2 years ago

Nginx 初识

mac 安装:

brew search nginx
brew install nginx
/usr/local/etc/nginx/nginx.conf (配置文件路径)
/usr/local/var/www (服务器默认路径)
/usr/local/Cellar/nginx/1.19.6  (nginx安装路径) 

脚本:

启动

sudo nginx

Nginx 默认8080端口,这时就可以访问了:http://localhost:8080/

修改 nginx.conf 后,重载配置文件

sudo nginx -s reload
快速停止 nginx 服务器
sudo nginx -s stop
zhangzheng-zz commented 2 years ago

ng 缓存设置

http 缓存流程图

image

浏览器操作的影响

image

Mac 上面的强制刷新对应。 command + shif + r Disable cache 同理

举个例子:

正常刷新:

image

max-age=0表示不管response怎么设置,在重新获取资源之前,必须先检验ETag/Last-Modified判断是否过期,如果没有过期,还是会返回 304也就是命中协商缓存。否则就是 200 。

结论命中了协商缓存 304 这里过期时间设置了一个月。

从 7 月 1号开始往后一个月 除非服务器更新了资源

image image

强制刷新的时候就比较神奇 结论当然是返回 200

image image

如果request headers中,Cache-Control为no-cache。表示不管服务端有没有设置Cache-Control,都必须从重新去获取请求,走协商缓存的校验,其实原理跟 max-age = 0 一致,但是为什么协商缓存失效了,因为没有 etag 和 last-mofidy 表示时间的请求头。导致 协商缓存失败!!!

不管是max-age=0还是no-cache,都会返回304(资源无修改的情况下),no-store才是真正的不进行缓存。

ng 关于缓存响应头的配置

image