cache-control没有生效

来源:6-10 静态资源服务器10--缓存

Liujunyan

2019-01-02

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

写回答

4回答

505380967

2019-02-24

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

0
0

Liujunyan

提问者

2019-01-07

测试截图

//img.mukewang.com/szimg/5c3223b90001794712260908.jpg

//img.mukewang.com/szimg/5c32240c0001b61b11340929.jpg

//img.mukewang.com/szimg/5c32244d0001248911250883.jpg

//img.mukewang.com/szimg/5c32255d0001cf5f11720738.jpg

0
0

Samaritan

2019-01-06

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

//img.mukewang.com/szimg/5c31b6aa00018d7e07400224.jpg

0
1
Liujunyan
老师是这样,上面的测试我全部都是已经去掉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
共1条回复

漠然默然

2019-01-04

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

0
0

Node.js入门到企业Web开发中的应用

Node.js是Web应用开发的一个福音,特别适合中小型系统的快速开发!

1580 学习 · 303 问题

查看课程