2017年网站内部优化技巧大盘点
一直都没将网站内部优化的技巧进行汇总,今天我们就将《2017年网站内部优化技巧大盘点》跟大家分享一下。
减少HTTP请求
解决方法:
1、图片合并(css sprite)
2、javascript 合并
3、css 合并
4、data url 内联图片
使用CDN
要加速网站的响应时间,就得加速各种静态文件资源的下载,根据物理法则,需要让资源放在离用户尽可能近的地方,这就需要CDN了。当然,一般的厂商不可能在全国各地建立CDN机房,这时候可以购买第三方的CDN服务。
添加Expire/Cache-Control头
这是设置浏览器缓存用的。不过要注意的是,如果设置的缓存时间较长,那么每次修改文件的内容时,需要一并修改文件名称才能使客户端重新发起请求。这就是为什么很多网站的css和js文件都带着时间戳或者hash戳。
开启Gzip压缩
Gzip压缩是指,文件在传输前经过服务器压缩,传输到客户端之后由浏览器解压,从而减少传输流量,对于文本文件,都应该进行Gzip压缩。对于图片和PDF,则不宜Gzip压缩,因为这些文件本身是经过压缩的,使用Gzip甚至可能起到反效果。
把css文件链接放在顶部,js文件放在底部
css文件放在顶部是为了防止页面出现空白或者出现闪烁的现象,js放在底部是为了防止页面渲染被阻塞。
避免使用 css 表达式
css表达式计算频率太高,会影响页面效率。
外链js和css文件
外链css,js文件虽然比内联方式增加了HTTP请求,但是却可以让css,js被浏览器缓存下来,并且,css,js压缩合并之后增加的HTTP请求数并不会太多,所以优点大于缺点。
内联css,js在符合以下条件时也是可以采取的:
1、只应用于一个页面
2、不经常被访问到
3、脚本和样式很少
减少DNS查找
每次访问互联网上的一个主机,假如没有命中DNS缓存,就会发起一次DNS查询,会消耗掉一定时间。如果把资源文件分布在不同的主机中,就会增加DNS缓存不命中次数,不过这又跟前面的几条规则相违背,所以还是需要权衡啊。
压缩css和js文件
减少传输流量
避免重定向
重定向会增加浏览器的请求次数
配置ETag
服务器可以在响应报文中添加ETag这一向,那么当浏览器下次请求同样的资源时,会携带If-No-Match条目。加入ETag没有变化,服务器返回304,无须重新下载资源。
缓存Ajax
Ajax的一个最重要的优点就是向用户提供即时反馈,因为它异步的从后台Web服务器请求信息。但是,使用Ajax并不保证用户不会等到异步的JavaScript和XML返回响应。在很多应用程序中,用户是否需要等待取决于如何使用Ajax。用户是否需要等待的关键因素在于Ajax请求是主动的还是被动的。主动请求是基于用户的当前操作而发起的,被动请求则是为了将来使用而预先发起的。我们需要注意的是,“异步”并没有暗示“实时”。为了提升性能,最重要的是优化Ajax响应。而改善这些主动Ajax请求的最重要的方式就是使响应可缓存。如同在“添加Expires头”中讨论的,一些其他规则也适用于Ajax,包括:压缩组件、减少DNS查找、精简JavaScript、避免重定向、配置Etag。
减少DOM元素的嵌套
过多的DOM元素和DOM元素的嵌套会拖慢js的执行速度。
给静态资源分配一个无cookie的域名
一般情况下,请求静态资源是不需要带cookie的,所以把它们独立开来