采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,想问下,down下课程源码看服务端有设置Cache-Control的max-age,但是浏览器上不管是刷新还是重新回车进入,请求头的Cache-Control max-age始终是0是怎么回事?
哈哈,同样的问题,终于找到原因了。res中的ETag标签的值和req中if-None-Match中的值不一致。if-None-Match去掉了逗号后面的部分,导致每次都不走缓存。所以ETag中不能包括逗号吧。
测试截图
浏览器打开控制台的时候回默认禁用 cache,关闭掉这个选项
老师是这样,上面的测试我全部都是已经去掉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从而触发协商缓存,想问下老师,是不是这么回事?谢谢 另外~好像采用回复的方式没办法贴图,我把测试的贴图通过新的回答给出,麻烦老师看下
你是重新刷新的吧, 视频里面又讲.
登录后可查看更多问答,登录/注册
Node.js是Web应用开发的一个福音,特别适合中小型系统的快速开发!
938 6
1.6k 6
1.0k 6
955 5
8.2k 5