HTTP Cache-Control和params命令

时间:2017-05-10 13:25:46

标签: http caching cache-control

为什么浏览器会缓存数据,不向服务器发送请求,如果url中的查询参数的顺序相同?

例如,如果请求

  

/产品Q =电话&安培;猫= 1

发送响应标头 Cache-Control:max-age = 60

下一个请求

  

/产物猫= 1和2; Q =电话

请求发送到服务器,但应从缓存中检索数据

另外一些框架建议

  

如果要缓存使用大量查询字符串的请求   参数,考虑对它们进行排序以确保请求是   正确缓存。

     

通过订购params,您可以确定缓存   密钥将在请求之间保持一致,并且您正在缓存   有效。

2 个答案:

答案 0 :(得分:4)

HTTP没有定义查询参数的语法。因此,从缓存的角度来看,这些URL可能会识别出不同的内容。

答案 1 :(得分:0)

根据HTTP RFC,缓存的主键是URI:

  

主缓存密钥由请求方法和目标URI组成。但是,由于目前常用的HTTP缓存通常仅限于缓存对GET的响应,因此许多缓存只是拒绝其他方法,而仅使用URI作为主缓存密钥

因此,所有与缓存相关的标头:Cache-ControlExpiresETag等都基于一个前提条件:相同网址的资源。