这是我参与更文挑战的第27天,活动详情查看: 更文挑战
继内容篇、服务器篇一(CDN, 缓存)后,我们来继续学习关于加速网站速度的其他可行方法。
其他加速网站速度的建议:
服务器
Gzip压缩响应内容
简单来说,就是通过压缩服务器响应内容,加速Http响应时间。
实现机制是,Web客户端,即浏览器请求时,在请求头中添加:
Accept-Encoding: gzip, deflate
则服务器在返回响应数据时,就会以相应的方式压缩响应内容,并在响应头中添加:
Content-Encoding: gzip
告诉浏览器其内容是通过Gzip压缩的。雅虎文中提到,通过Gzip,可以减少70%的响应规模。
百度百科关于Gzip的解释:HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。一般对纯文本内容可压缩到原大小的40%。
Gzip对文本内容,如html,js,css,xml,json等,都是值得的;而对图像,pdf等已使用其他相关算法压缩过的内容并没有明显压缩效果。
Apache/Nginx均支持配置Nginx。
配置ETag Entity tags
ETag是用来判断浏览器缓存是否和服务器上的一致的一个标签。
百度百科中阐述,服务端响应内容中设置:
ETag:"50b1c1d4f775c61:df3"
而浏览器请求时,则添加:
If-None-Match : W / "50b1c1d4f775c61:df3"
如果ETag没改变,则服务器响应304,浏览器收到响应后从缓存加载内容。
HTTP状态码304:服务端已经执行了GET,但文件未变化。
关于ETag这一点,自己不曾使用过,担心阐述错误。如有错误,还望指正!
尽早刷新输出缓冲
这一点,简单来讲,就是讲js、css等资源文件放在HTML的头部,在整个HTML未完全加载解析的情况下,并行的同步下载js、css资源文件。
使用GET来完成AJAX请求
POST过程是:先发送文件头,才发送数据。需要两步;GET只需发送一个TCP包。 但是,URL长度过长时,则需要使用POST。
而且“GET”表示获取数据,而“POST”表示发送数据。
关于各个浏览器的GET-URL的最大长度:
1、IE:2083(2K+53)
2、firefox:65536
3、chrome:8182
4、Safari: 80000
5、Opera: 190000
避免Img空src
空的Img-src会导致浏览器执行以下请求:
-
IE: 请求相应页面的目录。
-
Chrome/Safari:请求相应页面本身。
-
Firefox: 3.5版本前与Chrome/Safari一样;其后版本则不发送请求。
-
Opera:Do-nothing。