为什么浏览器会缓存数据,不向服务器发送请求,仅如果url中的查询参数的顺序相同?
例如,如果请求
/产品Q =电话&安培;猫= 1
发送响应标头 Cache-Control:max-age = 60
下一个请求
/产物猫= 1和2; Q =电话
请求发送到服务器,但应从缓存中检索数据
另外一些框架建议
如果要缓存使用大量查询字符串的请求 参数,考虑对它们进行排序以确保请求是 正确缓存。
通过订购params,您可以确定缓存 密钥将在请求之间保持一致,并且您正在缓存 有效。
答案 0 :(得分:4)
HTTP没有定义查询参数的语法。因此,从缓存的角度来看,这些URL可能会识别出不同的内容。
答案 1 :(得分:0)
根据HTTP RFC,缓存的主键是URI:
主缓存密钥由请求方法和目标URI组成。但是,由于目前常用的HTTP缓存通常仅限于缓存对GET的响应,因此许多缓存只是拒绝其他方法,而仅使用URI作为主缓存密钥。
因此,所有与缓存相关的标头:Cache-Control
,Expires
,ETag
等都基于一个前提条件:相同网址的资源。