Skip to content

HTTP缓存机制 #6

@AILINGANGEL

Description

@AILINGANGEL

http缓存分为强缓存和协商缓存,强缓存的优先级高于协商缓存

强缓存有两种方式: expires响应头(http1.0)和cache-control(http1.1)

  • expires
    服务器在请求头上带上这个字段告诉浏览器什么时间过期

  • cache-control
    max-age字段设置多少s之后缓存失效

协商缓存也有两种方式: last-modified和if-modified-since 以及 etag和if-none-match

  • last-modified和if-modified-since
    如果强缓存过期就浏览器就会发送请求到服务器并带上if-modified-since字段,服务器收到之后会返回last-modified字段,如果没炒作if-modified-since字段就会告诉浏览器当前的缓存还是有效的,服务器没有修改过

这种方式存在的问题就在于时间精度问题,如果在1s内修改了文件服务器无法检测出来

  • etag和if-none-match
    服务器为每个文件生成一个etag值,只要文件不变这个etag的值就不变。浏览器请求资源的时候会在if-none-match中带上这个etag值,如果服务器检测发现etag没变就会告诉浏览器当前缓存还是有效的

协商缓存和http 304相关联

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions