针对读者:网络程序员,尤其是前端程序员。
一般说来,只有移动才有这个问题,因为桌面太强大了。移动一般在三个方面比桌面逊色很多。第一是CPU速度,第二是网速,或者称带宽,第三是内存。
眼下网络应用的一个重要问题是显示速度,如果让网民多等一秒钟,就不爽了,如果要等若干秒,那这个网站可能就是不想活了。而因为以上原因,移动显示要比桌面慢很多倍,速度和等待时间可能就很可观了。网页加快技术是WPO(Web performance optimization)里极其重要的一部份。
现在网页的复杂性也恶化了这个问题,因为有大量的动态脚本,无论是CSS还是JS。另外,HTML5固然强大,本身占有资源也不少。更加上为了追求完美或者发展环境,大量的库,插件和框架被运用,这些全都消耗资源。
在上面三个方面,内存问题最小,仅仅是在大数据量,大程序,或者编程不佳,内存没有释放才会出问题。而且问题往往干脆就是崩溃了。影响速度最主要的还是CPU和网速。
但网速是很客观和无奈的。作为程序员,可做的不多,了不起就是把AJAX改成WbSocket,这样虽然快一点,但这样不但前端要变,后端也要加入大量程序工作。
前端只能在一定的网速下,减轻对网速的负担。
首先是减少外调库或者程序的联结次数,无论是CSS还是JS的。能够合并尽量合并。HTTP次数越少越好。
但同时不宜把可以外挂的连接内容拷贝进网页里来,那永远不是什么好主意。另外,如果可以把远程的外挂文件拷贝在本地,也是加快速度的好事。
CDN翻译IP地址花时间,可以直接用IP,当然显示仍然可以用CDN字符串。
外挂文件可以去掉空格,或者用min文件。
HTTPS要用掉大量资源,尽可能考虑用HTTP,比如对AJAX需要加密部分采用HTTPS。
一般说来,JS脚本不会对上来显示有关,所以应该放在页面显示之后,CSS脚本也是同样道理,但固定和初始化的办法直接放进HTML文件里。原则是:在网页完成显示之前不操作任何JS和CSS(动态的)。
在网页完成显示之前更不应该,也没有可以避免的是AJAX或者redirection操作了。这是网络程序员可以起码做的到的。如果需要进行后台操作,比如数据库提取,那这个操作可以在后台提前。就是在比较极端的情况下,程序也可以通过数据库来更新相对静态(指不需要初始化就操作AJAX)的网页以供网民。总之,相对比较静态的网页准备必须就可能做到。当然,网页的参数可以很多,如何尽可能做到完全依靠程序员的经验和能力了。
|