请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

cache-control没有生效

老师,想问下,down下课程源码看服务端有设置Cache-Control的max-age,但是浏览器上不管是刷新还是重新回车进入,请求头的Cache-Control max-age始终是0是怎么回事?
图片描述

正在回答 回答被采纳积分+3

4回答

505380967 2019-02-24 11:20:09

哈哈,同样的问题,终于找到原因了。res中的ETag标签的值和req中if-None-Match中的值不一致。if-None-Match去掉了逗号后面的部分,导致每次都不走缓存。所以ETag中不能包括逗号吧。

0 回复 有任何疑惑可以回复我~
提问者 Liujunyan 2019-01-07 00:13:58

测试截图

https://img1.sycdn.imooc.com//szimg/5c3223b90001794712260908.jpg

https://img1.sycdn.imooc.com//szimg/5c32240c0001b61b11340929.jpg

https://img1.sycdn.imooc.com//szimg/5c32244d0001248911250883.jpg

https://img1.sycdn.imooc.com//szimg/5c32255d0001cf5f11720738.jpg

0 回复 有任何疑惑可以回复我~
Samaritan 2019-01-06 16:05:09

浏览器打开控制台的时候回默认禁用 cache,关闭掉这个选项

https://img1.sycdn.imooc.com//szimg/5c31b6aa00018d7e07400224.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 Liujunyan #1
    老师是这样,上面的测试我全部都是已经去掉disable cache后做的,这边测试的结果是这样:
    chrome(版本 71.0.3578.98(正式版本)win10)下:
    1、第一次输入链接,正常发送请求,请求头cache-control字段值为no-cache;
    2、在同个tab下在网址栏重新按回车,或者按f5刷新,都会触发请求并且请求头的cache-control字段值是max-age=0
    3、新开一个tab重新输入网址,此时max-age的强缓存生效,浏览器并没有发送请求,直接从缓存中取
    火狐下测试结果是:
    1、首次输入正常发送请求
    2、当前页面刷新发送请求返回304
    3、在当前tab网址栏回车或者新开一个tab重新输入网址,max-age强缓存生效
    我的疑问是:
    1、是否不同的浏览器触发强缓存的条件会有差异
    2、上面最初提的那个问题当时的疑问其实是为什么在node服务端设置了cache-control的时间,浏览器后续的请求头的cache-control的max-age会是0从而触发协商缓存
    现在我的理解是在允许浏览器缓存的情况下,如果用户的操作没有触发强缓存浏览器就会自动将请求头的cache-control设置成max-age:0从而触发协商缓存,想问下老师,是不是这么回事?谢谢
    另外~好像采用回复的方式没办法贴图,我把测试的贴图通过新的回答给出,麻烦老师看下
    回复 有任何疑惑可以回复我~ 2019-01-07 00:13:33
漠然默然 2019-01-04 11:27:30

你是重新刷新的吧, 视频里面又讲.

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信