作者:舍舍与你-6 | 来源:互联网 | 2014-05-27 11:48
继上篇的“影响网站加载速度之服务器端因素分析”之后,达闻今天要分享的是影响网站在家速度页面内容上的因素。如果对服务器端的可控性不大,那我们也可以看看在网站页面内容上,我们能进行怎样的操作来加快页面加载速度。1,尽量减少重定向尽管网站运营
继上篇的“影响网站加载速度之服务器端因素分析”之后,达闻今天要分享的是影响网站在家速度页面内容上的因素。
如果对服务器端的可控性不大,那我们也可以看看在网站页面内容上,我们能进行怎样的操作来加快页面加载速度。
1,尽量减少重定向
尽管网站运营过程中有许多的理由需要用到使用到重定向(redirect),但是在条件允许时,建议尽可能避免。
重定向会导致额外HTTP请求应答的往返传输时间(RTT),也在延长用户的等待时间。因此,除非不得已(如技术上需求),尽量避免使用重定向,或者尝试其它替代的解决方案。
注意:尽量不要在页面里链接一个会发生重定向的URL
不要进行多次重定向,比如A redirect to B and re-redirect to C
不要重定向到打不开的页面(404页面)
避免使用外部文件而产生重定向
2,将查询字符串从静态资源中删除
就算设置了 Cache-Control: public
来指定响应能由客户端和代理进行缓存,大部分的代理服务器不会把带”?”号的URL进行缓存。因此,静态资源中避免查询字符串(把问号去掉)出现,或用encode过的参数来替换原来的,来让代理来缓存这些资源,节省每次重新解析的时间。
3,指定字符集
在HTML页面的头部指定字符集,有助于浏览器立即开始解析HTML代码。在HTML代码的位置添加一段简单的代码便能实现:如
浏览器根据获得的字符集,把编码解析为可以显示在屏幕上的字符。如果浏览器不能获知页面的编码字符集,一般都会在执行脚本和渲染页面前,把字节流缓存,然后再搜索可进行解析的字符集,或以默认的字符集来解析页面代码,这会导致浪费时间。为了避免浏览器把时间浪费在搜寻合适的字符集来进行解码,最好在页面之初就指定字符集,任何大于1K字节的HTML文档更应如此(因为浏览器对此一般都是缓存1K以内)。
4,压缩HTML代码
压缩HTML代码可以减少页面文件体积从而提高页面下载速度
减小HTML代码有几种主要方式:
删掉多余的空格和空行
删掉网站建设或维护过程中产生的注释,或动态程序产生的一些垃圾代码
使用DIV+CSS取代老式的Table布局。
现在已经有很多在线工具可以帮助压缩HTML代码,如 HTML Minifier
5,避免出现错误请求
出现404或410等错误的死链接会导致多余的请求而浪费时间。随着网站的更新,难免会出现一些资源文件或者页面被移除或者改名,这就造成了错误请求。错误请求不但会弱化用户体验,还可能对页面加载时间造成影响,比如Javascript和CSS会阻断浏览器的正常解析,甚至造成不能正常访问。
一个简单可行的解决方法是安装Google
Webmaster工具,它会自动给你分析出哪些资源文件是不可访问的,直接去改了就行。对于一个成熟的网站来讲,CMS里也应该有自检测错误链接的功能,这样才能及时更新或同步最新的资源。同时工具也是必不可少的,如死链接查询工具:Xenu’s
Link Sleuth。
6,由同一网址提供资源
从唯一的URL来调用资源是非常重要的,可以消除重复下载造成的额外往返消耗。在网页中经常重复用到同一资源(如图片文件,CSS,js文件),每个资源文件都只应该有一个唯一的URL与之对应,这样可以让浏览器避免重复加载同样的内容,而缩减整体的加载时间。另外,大部分的浏览器不管资源是否可缓存,也不会在同一session里对同样的URL发起HTTP请求,因此可以节约往返时间。
注意:同一资源不要通过不同的主机名来调用,从而避免DNS
lookup的时间。对于相对URL和绝对URL来说,如果主机名默认唯一,那就算同一URL。比如abc.com/images/1.jpg
和/images/1.jpg是同一URL。但要注意避免子域名sub.abc.com下的页面用到/images/1.jpg这种情况,很可能不是初衷abc.com/images/1.jpg。
7,减少DNS查询次数
尽量减少从不同独立主机请求的DNS解析次数,从而减少RTT延迟时间。当浏览器与Web服务器建立连接时,它需要进行DNS解析,将域名解析为IP地址。由于DNS解析结果可以缓存在客户端的浏览器和系统里,如果记录有效的话就可以减少重新请求时间。然而,一旦客户端需要执行DNS
lookup时,等待时间将会取决于域名服务器的有效响应的速度。虽然所有的ISP的DNS服务器都能缓存域名和IP地址映射表,但如果缓存的DNS记录过期了而需要更新,则可能需要通过遍历多个DNS节点,有时候需要通过全球范围内来找到可信任的域名服务器。一旦域名服务器工作繁忙,请求解析时就需要排队,则进一步延迟等待时间。换句话说,虽然域名解析需要1个RTT的时间来完成,但实际时间经常取决于DNS的排队等待和解析时间。因此,减少DNS的查询次数非常重要,页面加载时就尽量避免额外耗时。为了减少DNS查询次数,最好的解决方法就是在页面中减少不同的域名请求的机会。
工具推荐:Pingdom Tools