1. 再访问请求的时候,如果是一个页面,我们第一次访问的状态码是200,第二次可能就是304,304是什么状态呢,为什么会是这个状态呢?

nginx 控制浏览器缓存_修改时间 image.png

nginx 控制浏览器缓存_缓存_02 image.png

nginx 控制浏览器缓存_请求头_03 image.png

nginx 控制浏览器缓存_缓存_04 image.png

2. 其实这就是浏览器的缓存,服务器会返回给浏览器一个的最后修改时间,第一次访问是正常的所以返回200,第二次访问发现文件修改时间是一致的没有修改,于是就直接从缓存中拿这个文件了,所以304表示使用的是缓存

原来对于静态资源来说:

  1. 当浏览器第一次发起请求时(请求头中没有If-Modified-Since),server会在响应中告诉浏览器这个资源最后修改的时间(响应头中的Last-Modified)。

  2. 浏览器也很聪明,当你再次(点击链接,或者F5,或者回车,但是不能是ctrl+F5)请求这个资源时,浏览器会询问server这个资源自上次告诉我的最后修改时间以来有没有被修改(请求头中If-Modified-Since)。

  3. 如果资源没有被修改,server返回304状态码,并不会再次将资源发送给浏览器,浏览器则很知趣的使用本地的缓存文件。

3. 在nginx中配置缓存信息

nginx 控制浏览器缓存_修改时间_05 image.png

如图我们配置的是访问该静态文件的缓存失效时间。


nginx 控制浏览器缓存_请求头_06 image.png


设置完成之后在浏览器请求就会出现如图的信息。

4. expires @22h30m;表示每天的22点30分到期

5. expires -1h; 距离现在时间的一个小时之前就已经失效

6. expires epoch 不设置失效时间

7. expires off 代表nginx没有设置失效信息

8. expires max 代表永远不过期的设置