作者回复: 我看了一下rfc,对于private和public没有明确的默认值说法,可能是我弄错了,需要再测试看看。
作者回复: 可以这么理解,也是一个很好的角度。
作者回复: http协议里没有对此做出规定,一般的做法是由源站向代理发送pull请求,要求代理主动更新缓存。
这个pull请求不属于http协议,具体实现就看两者之间的约定了。
作者回复: 1,是的。
2. X-Accel是自定义字段,和x-powered-by差不多,意思是被谁加速。
作者回复:
1.没有这些就按普通的缓存策略来处理,在有效期内直接用,过期发条件请求。
2.这两个属性本身就是冲突的,如果同时给出,那就由服务器自己决定策略了,rfc本身没有对此做出规定。
作者回复: 欢迎经验分享!
作者回复: max-stale是可以接受的过期时间,min-fresh是可以接受的新鲜时间。
不好理解也没事,这两个属性用的不多,可以以后实际遇到了再体会。
作者回复: 只要理解的http的缓存代理,nginx的是比较容易掌握的,可以结合nginx的文档,看proxy相关的指令,逐条对照http的功能。
单纯讲nginx就有点太大了,讲不过来。
作者回复: many thanks。
作者回复:
1.是的。
2.没错,http允许自定义请求方法和处理逻辑。
作者回复: 这个测试不需要做特别的修改,直接使用实验环境的配置就行。
你可以用wireshark抓包看看,是否走的本地网络环境。
作者回复: must-revalidate是响应头里的属性,不会出现在请求头里,所以应该还是no-cache。
作者回复:
1.正确。
2.http客户端有很多种,浏览器只是其中之一,如果用Python、php自己写客户端,那就可以使用这些缓存策略。
浏览器通常有一些最基本的策略,而ajax等就可以自己灵活设置。
3.服务器控制资源和缓存,它会检查请求资源的有效期,与客户端的请求比对,返回304或者是新的内容,应用服务器和应用服务器都可以设置。
4.only-if-cached这个我也没有见过具体的应用场景,但既然有这个属性,就应该是有用的。
作者回复:
1.max-age不能用在请求头里,只能在响应头里指定资源的有效期。
2.在有效期内,如果不是刷新,就可以直接使用缓存。
3.发送条件请求,如果在有效期内,就会收到304。
作者回复: thanks。
作者回复: 感谢指正,不小心写错了,应该都是“-”,我尽快改过来。
作者回复: 比如数据压缩,就是时间换空间,增加了计算时间,减少了数据量。
作者回复: 准确地说,proxy-revalidtae与must-revalidate的效果是相同的,但它只应用于public缓存。
作者回复: 可以参考一下第18讲,改用303 see other。