一、合并网站资源
为什么在高并发的时候,铁道部车票预订网站会如此不给力呢?有好事者对此网站进行了深入分析,大致结论是,网站在提交订单时向服务器发送的请求太多,加上本来瞬间访问流量就很大,所以导致访问请求堵塞。其实这个问题在很多网站上都存在,尤其是中小公司的企业网站。知道了问题的所在,解决起来也就得心应手了,应对的办法就是减少想服务器频发发送请求,而合并资源就是最为有效的一种方式。这样虽然同一个调用文件每次加载的时间会适当延长,但是上行下载的次数减少了,提高了代码运行效率。
一般的网站需要外部加载到资源大致有三种,分别是CSS样式表、JS脚本程序以及图片素材。而这个三个均可以进行适当合并,最大程度上降低网站的请求次数。CSS只要目的是控制网站样式的,如果将所有的CSS合并到一个文件上,一定要将其置于<head>元标签内,其目的是让网站首先加载CSS。JS以及其它的一些脚本程序,是为了实现网页的某些特效而编写的,调用位置可以适当靠后,但是需要明白的是,JS不同于CSS并不是所有的JS都可以合并到一起,引用位置也很关键,否则可能会导致网站一些功能失效。图片素材合并多见于网站背景,通过二维坐标调用图片,但是需要注意即便如此,合并后的图片大小也要控制在2M以内,否则会因加载时间过长带来不好的用户体验。
二、压缩网页元素
如果网站资源本来就很大,通过合并可以减少时间的,但是仍旧无法从根本上解决问题。因为合并网站资源的主要是减少客户端向服务器的请求次数,网站资源大小是丝毫没有变化的。所以对网页元素进行必要压缩,是提升网站访问速度的另一个捷径。压缩网页元素第一种方法是重写网站代码,要知道采用DIV+CSS布局网站程序,会比Table布局可以减少不少代码。未来当HTML5技术普及后,网站代码容积会得到进一步压缩,避免代码冗余是减少网站体积的一个绝好方法,尤其是删除一些不必要的费码。
现在很多网站加载速度慢,与网站所是用的图片素材过大有直接关系。如没有特殊要求,但就显示而言网站图片显示分辨率控制在72dpi可以,即使是图片显示质量稍许差些,总比半天无法加载带给用户的感觉要好很多。所以,如果可能请将网站图片大小控制在200Kb以下,在网站上尽可能少用一些高分辨率高质量的图片素材。通过服务器开启Gzip压缩,也是降低网页体积的一个好办法,笔者就有亲身体验,50K左右大小的网页,开启Gzip压缩后可以控制在10K左右。网页压缩率达到60%以上,这样网站运行快速如飞就不足为奇了。
三、调整代码位置
代码位置也会影响到网站加载速度?答案是肯定的,我们举个简单的例子,现在很多网站都有统计程序。其大多通过调用外部js实现,一般都是将统计程序置于网站底部,其目的是避免因站外JS加载速度太慢,影响到整个网站的用户体验。这就很明显了,如果将一些体积大的脚本程序放置在网页的头部,势必会拖慢真个网站加载速度的。调整网站代码位置有两个需要坚持的原则,其一是网站外部调用的代码尽可能的放置在后面加载,因为外部代码具有不可控性;其二是,提及比较大的脚本程序放置在程序后面加载,尤其是一些JS程序,在不影响网站效果的情况下,请尽可能调整到其它代码后面加载执行。
还有一个问题虽与代码位置无关,但是也是很容易被很多程序人员忽视的,就是网页的渲染问题。比如我们CSS代码里面有个<style="border:none">和<style="border:0">,在页面视觉表现形式上两个没有任何区别,但是对于浏览器解释渲染是有区别的。<style="border:none">代表着不存在边框,不需要进行边框渲染,但是<style="border:0">说明有边框,只是边框的宽度是0而已,实际上浏览器在解释代码的时候,会进行一次也没渲染。类似的还有网站图片大小的控制,很多程序员认为如果图片尺寸刚好与标准一致,就不需要对图片的高度和宽度需要定义,这样做会让代码足够简洁,其实这样理解是错误的,没有定义就意味着浏览器要自行识别然后渲染展现,而这一过程是需要时间的。