浏览器缓存分为两种, 强制缓存 与 协商缓存,
https://www.pass4lead.com/300-209.html
https://www.pass4lead.com/300-320.html
强制缓存有 在 header 中的 expires 设置一个过期时间,如设置则未过期文件将不请求服务器直接使用缓存,这个的缺点是服务器时间与客户端时间可能不一直. 另一种是 cache-control,通过设置 cache-control 的 max-age 设置相对过期时间,单位 秒,可以相对于客户端请求的时间之后多长时间之内直接使用 缓存.
协商缓存有 Last-Modified 标记最后文件修改时间,如果文件修改时间没有变更则返回 304 直接使用本地缓存,通常服务器与浏览器会自动完成此字段的. 另外一种是 Etag,这种方式是看文件内容是否变更而非通过修改时间,这样就避免了 a -> b -> a 这种虽然有修改但是实际内容并未发生变化的情况.这种方式的缺点是需要发送一次请求向服务器,用于确定是否使用缓存,而 强制缓存则无需向服务器发送请求,浏览器会直接使用未过期的缓存.
优先级 cache-control > expires > Etag > Last-Modified
https://www.pass4lead.com/200-355.html
https://www.pass4lead.com/210-060.html
浏览器刷新方式有三种, ctrl + f5, f5, 地址栏输入地址按回车.ctrl + f5 方式会强制重新请求并重新缓存,上述机制均无效. f5 刷新只有 Last-Modified 这种机制有效, 输入地址回车的方式上述机制都有效
最后附上常用 http 状态码含义
200 : 正常请求
201: 服务器接收到请求,一个新的资源已经建立
202: 服务器接收到请求,新的资源尚未被建立
204: 服务器已经成功处理请求,并且无需返回信息
300: 资源重定向
301: 资源永久重定向,常用于服务器搬迁,对搜索引擎的友好提示,不会损失seo
302: 资源临时从不同 url 响应
303: 资源可以在另一个 url 找到,临时重定向
304: 服务器已经接收到请求,但是请求的文档并未发生改变,应使用缓存的内容
400: 语义有误,服务器无法理解
401: 当前请求需要用户验证
403: 服务器已经理解请求,但是拒绝连接
404: 服务器没有找到对应的资源
500: 服务器遇到一个未知的错误