中文网站工程建设后端强化方式归纳
使用者出访页面的等候时间,有80%是发生在应用程序后端,不光是页面和页面中各式各样原素(相片、CSS、Javascript、flash…)的浏览其内。
具体内容表明呵呵强化的方式
对第一次出访您中文网站,仍未在应用程序cache中内存您中文网站文本的使用者,我们可以做的事包括:
1)增加两个页面出访所造成的http相连单次
对第二次出访你中文网站的使用者,页面所造成的 http 相连单次是影响操控性的一个关键性困局。
未雨绸缪︰
-尽可能简约的页面结构设计,最大某种程度增加相片的采用,通过舍弃许多无谓的页面特技来增加javascript的采用。
-采用许多强化基本功,比如说借助相片的大背景偏转增加相片的特征值;image map控制技术﹔采用Inline images将css相片绑定到页面中。
一尽可能分拆js和css文档,增加分立文档特征值。
2)采用gzip填充页面文本
采用gzip来填充页面中的动态文本,能明显增加使用者出访页面时的等候时间(据传可达至60%)。非主流的web伺服器都全力支持或提供更多gzip 填充,如果采用apache伺服器,只需要在配置文档中迈入modgzip ( apache1。x )或 moddeflate(apache2.x)方可。但凡动态的页面,采用gzip 填充都能明显提升伺服器工作效率并增加频宽开支,不光注意相片文本这类已经是填充文件格式了,亦须千万别再进行填充.
3)将CSS放到页面顶部,JS文档放到页面顶部
CSS 的提及要放到 html的颈部 header中,JS文档提及尽可能放到页面顶部条码的前面,主要的路子是让核心理念的页面文本尽快表明出来.不过要不光注意,许多大批采用js的页面可能有许多js文档放到顶部会引发一些难以预测的问题,根据前述情况适度借助方可。
4)使JS文档文本最优化
具体内容来说就是采用许多javascript填充工具对js脚本进行填充,去除其中的空白字符、注释,最优化变量名等.在采用gzip填充的基础上,对js文本的填充能将操控性再提升5%。
5)尽可能增加外部脚本的采用,增加DNS查询时间
千万别在页面中提及太多的外部脚本,首先,一次dns的解析过程会消耗20-120毫秒的时间;其次,如果在页面中提及太多的外部文档(如各式各样广告、联盟等代码),可能会因为外部文档的响应速度而将你的中文网站拖得很慢.如果不得不用,那么就尽可能将这些脚本放到页脚吧。不过有一点需要提及,就是应用程序一般只能并行处理同一域名下的两个请求,而对不同子的域名则不受此限制,因此适度将本站动态文本( css , js )放到其他的子域名下(如static.xxx.com )会有利于提升应用程序并行浏览页面文本的能力。
对您中文网站的经常性访问使用者,主要的强化路子就是最大限度借助使用者应用程序的cache来增加伺服器的开销。
1)在header 中添加过期时间(Expires Header )
在header中给动态文本添加两个较长的过期时间,这样可以采使用者今后出访只读取内存中的文档,而不会与伺服器造成任何的交互。不过这样做也存在许多问题,当相片、CSS和js文档更新时,使用者如果不刷新应用程序,就无法获得此更新。这样,我们在对相片、css和js文档修改时;必须要进行重命名,才能保证使用者出访到最新的文本。这可能会给开发造成不小的麻烦,因为这些文档可能被站点中的许多文档所提及。flickr提出的解决办法是通过url rewrite使不同版本号的URL事实上指向同两个文档,这是两个聪明的办法,因为url级别的操作工作效率是很高的,可以给开发过程提供更多不少便利。

2)将css和js文档放到分立外部文档中提及
将css和js文档放到分立文档中,这样它们会被单独内存起来,在出访其他页面时可以从应用程序的高速内存中直接读取。许多中文网站的首页可能是例外的,这些首页的自身浏览可能并不大,但却是使用者出访中文网站的第一印象以及导向到其他页面的起点,也可能这些页面这类采用了大批的ajax局部刷新及控制技术,这时可以将css和js文档直接写在页面中。
3)去掉重复的脚本
在正中,包含重复的js脚本会导致应用程序的内存不被采用,仔细检查呵呵你的程序,去掉重复提及的脚本应该不是一件很难的事.
4)避免重定向的发生
除了在 header中人为的重定向之外,页面重定向常在不经意间发生,被重定向的文本将不会采用应用程序的内存。比如说使用者在出访www。XXx。com,伺服器会通过301转向到www.xxx。com/,在前面加了两个“I”.如果伺服器的配置不好,这也会给伺服器带来额外的负担。通过配置apache的alias或采用modrewrite模块等方式,可以避免无谓的重定向.
做完了上述的强化,可以试着用yslow测试呵呵页面的操控性评分,一般都可以达至70分以上了。
当然,除了应用程序后端和动态文本的强化之外,还有针对程序脚本、伺服器、数据库、负载的强化,这些更深层次的强化方式对控制技术有更高的要求。