目录
一、常见状态码
1xx 服务器收到请求
2xx 请求成功
3xx 重定向
301 永久重定向:浏览器会记住哪个网址返回了301,让你到哪个地址去,下次再访问的时候就不访问原地址了,直接访问301返回的地址。例如:网站域名到期了(配合 location,浏览器自动处理)
302 临时重定向(配合 location,浏览器自动处理)
304 资源未被修改
4xx 客户端错误(404 not found、403 无权限 )
5xx 服务端错误
二、http headers
1.常见的 Request Headers
- Accept 浏览器可接收的数据格式
- Accept-Encoding: gzip,浏览器可接收的压缩算法
- Accept-Language: zh-CN,浏览器可接收的语言
- Connection: keep-alive,一次TCP连接重复使用
- Cookie: ,同域时,每次资源请求浏览器都会携带cookie
- Host: www.baidu.com,请求的域名
- User-Agent(简称UA) ,浏览器信息
- Content-Type: ,发送数据的格式(一般get请求是没有的)
2.常见的 Response Headers
- Content-Type: 返回数据的格式
- Content-length: 返回数据的大小,多少字节
- Content-Encoding: gzip 返回数据的压缩算法
- Set-Cookie: 服务端设置cookie
- Cache-Control: 控制缓存的策略
max-age=30000 最大过期时间(秒)
no-cache 不用强制缓存,让服务端自己处理(协商缓存)
no-store 不用本地缓存,也不用协商缓存
private 允许最终用户做缓存,如电脑、手机等
public 中间路由或者代理做缓存
后三个不常用
三、http 缓存
1.缓存的作用
可以通过缓存来减少网络请求的数量和体积,让网络加载和页面渲染更快;
网络的不稳定性也导致了页面加载的不稳定性,所以需要优化网络请求,增加页面加载的稳定性;
2.哪些资源可以被缓存?
静态资源( js、css、image )
3.缓存策略(强制缓存 + 协商缓存)
强制缓存
浏览器初次请求服务器,服务器会返回资源和 Cache-Control(如果服务器认为该资源可以被缓存,才加Cache-Control,如 js css image),再次请求时会判断缓存时间,如未过期,浏览器就会在本地缓存中找资源,然后返回给浏览器。如果缓存失效,就会再次请求服务端。
通过 Cache-Control 控制缓存的策略,用法见 Response Headers
协商缓存(对比缓存)
资源标识在 Response Headers 中,有两种,
Etag: 资源的唯一标识(一个字符),如 Etag: "1ec5-500266e2ae4c0"
Last-Modified: 资源最后修改时间(精确到秒)
二者可以共存,优先使用 Etag
原因:Last-Modified 只能精确到秒;如果资源被重复生成,而内容不变,则 Etag 更精确。
缓存流程图
4.刷新的方式对缓存的影响
正常操作:url 跳转、前进后退 (强制缓存有效、协商缓存有效)
手动刷新:f5、点击刷新按钮、右键菜单刷新 (强制缓存失效、协商缓存有效)
强制刷新:ctrl + f5 (强制缓存失效、协商缓存失效)