概述
参考教程HTTP | MDN。
URL
- URI uniform resource identifier
- URL uniform resource locator 资源定位符
URL包括了:
- 方案或协议: http/https, mailto, ftp, data, tel, ssh
- 主机
- 端口
- 文件路径
- 查询
?key1=value1&key2=value2
- 片段(网页的锚)
#anchor
缓存 cache
缓存控制 cache-controller
- 禁止缓存
no-store
- 强制确认
no-cache
每次都像服务器验证是否已经过期,如果返回304(NOT MODIFIED),表明没过期 - 私有/公有 public private
- 过期机制
max-age
秒为单位;expire
过期的时间
缓存的空间是有限的,所以储存缓存的机子会有一种叫做 缓存驱逐 的机制,清除优先级比较低的缓存。
资源加速
使用缓存可以加速资源载入。但是有可能出现服务器资源急需要更新但客户端的缓存还未过期的情况,所以最好在偶尔需要改动的文件的文件名后面加上版本号或者哈希值,例如filename_v101
,来区分每个文件版本的不同,以使客户端总是能够获取到最新版本的文件。
COOKIE
cookie是服务端设置在response中,发送给客户端的。客户端会把cookie存起来,在cookie 未过期 的期间,每次向服务器发起请求都会带上本服务器 所有的 cookie。所以说如果cookie过多,是非常消耗性能的。
由于安全性问题,cookie最好只在安全的https中使用,避免被明文解读。
设置了HttpOnly
的cookie无法被javascript解读到,可以一定程度上避免修改。
重定向
转发url,目的是保持原有url可用。
状态码一般是3xx,在response的body中带上新的url
1 | Location: /newloc |
客户端收到3xx之后使用新的url再次进行请求。由于有两次请求,性能上有很微小的损耗,但是由于第一次的response非常小,实际上也只是建立http请求的消耗而已,流量上差别不是很大。
status code
status code分为三类:
- 永久移除
- 临时移除
- 特殊情况
- 300
- 304 缓存刷新,表示缓存可用
重定向的手段
- http返回3xx状态码以及新的URL
html的head里面写meta数据,注意content的第一个参数是延迟时间,为了最佳体验最好设置为0(秒)
1
2
3<head>
<meta http-equiv="refresh" content="0;URL=http://www.example.com/" />
</head>javascript设定
1
window.location = "http://www.example.com/";