http缓存

缓存

  1. 强制缓存

    1. http1.0版本 param来标识是否使用缓存,param的值只有一个no-cache不使用缓存。在使用缓存时,expires标识缓存的有效期,expires的值是一个时间点

    2. http1.1版本 cache-control来控制是否使用缓存

      1. public 路由器等一系列网络节点和浏览器都可以缓存

      2. private 路由器等网络节点不能缓存数据,仅仅客户端(浏览器)可以缓存

      3. no-store 不使用缓存

      4. no-cache 此时看协商缓存的结果

      5. max-age.(cache-control: max-age=xx) 缓存的有效期,xx是一个时间段。如果max-age的值是0,那么这种情况和no-cache是一样的。在缓存有效期内,请求资源的话返回200(form disk cache / from memory cache)

  2. 协商缓存

    1. last-modified 标识资源最后一次的修改时间

      在请求资源时,返回last-modified。下次再请求该资源时,前端在请求头中携带字段if-non-modified: 值为上次返回的时间last-modified,服务器收到该字段后,读取磁盘中的该文件的修改时间和请求过来的时间进行比对,如果一致,表面自上次该资源返回后没有改变过,那么返回304状态码,告诉客户端资源没有发生过变化,继续使用客户端的缓存即可。如果有变化,返回200和新的文件内容。

    2. etag:对资源的内容进行md5值计算,得出一个字符串,只要文件的内容不同,得出的md5值不同。

      在请求资源时,返回该资源的etag值。下次再请求该资源时,前端在请求头中携带字段if-none-matched:值就是上次返回的etag值,服务器收到后,对该文件进行md5计算,得出的字符串与前端传递过来进行比对,如果一致,那么文件没有变化,返回304,客户端继续使用缓存即可。如果有变化,返回200以及新的文件内容

你可能感兴趣的:(http缓存)