http应该如何避免发送请求
需要减少发送http请求的次数,当http请求返回的结果可能重复的时候,就要避免发送这类请求
优化的方法有:本地缓存
将请求响应的key和value缓存在本地,发送相同请求时,直接在本地进行读取,同时记录一个估算的过期时间,当读取时发现过期,再发送请求;同时如果服务器上的资源并没有修改(通过比较Etag头部),服务器响应请求时就不带上资源,而是返回304,告诉客户端去读取缓存
如何减少发送次数
1减少重定向请求次数
当服务器资源移动后,客户端通过原来的url访问,服务器会返回302和location用来重定向
可以使用代理服务器来减少重定向次数:
客户端访问资源时,由代理发送请求给资源服务器,资源服务器返回重定向指令,代理重定向访问后得到资源,再返回给客户端,而且此时代理服务器可以记录重定向规则,直接避免了重定向请求的发生
2合并请求
将多个小请求合并成大请求,减少头部
同时可以减少建立的tcp链接数量
具体方法:
1在css中,可以合并多个小图片成为一张大图片发送,浏览器只需要请求一次,再根据css中的数据进行切割还原即可
2可以将小文件进行合并一起发送,效果类似
3使用base64编码图片,夹在html中直接发送,避免请求图片
3延迟发送请求
请求网页时,不需要获取完整的网页内容,只获取用户能看到的部分,当用户滑动页面时再加载接下来的部分达成延迟发送的目的
如何减少响应的数据大小
使用压缩来减少
1无损压缩
适合用在文本文件、程序可执行文件、程序源代码。源文件不会因为解压而被破坏
通过对文本建立统计模型,再使用哈夫曼编码生成二进制序列,频率越高的数据用越短的序列代替即可完成压缩
客户端使用accept-encoding来告诉服务器可选的压缩方式
服务器使用content-endcoding来告诉客户端自己使用的压缩方式
2有损压缩
将次要的数据舍弃,牺牲质量来减少数据量,常用与多媒体数据
可以使用accept字段里的q质量因子来告诉服务器期望的质量
webp格式