`
michaelxz
  • 浏览: 21273 次
  • 性别: Icon_minigender_1
  • 来自: 遂宁
社区版块
存档分类
最新评论

网站提速方案

阅读更多

  访问速度缓慢的互联网已经成为过去,但页面能瞬时呈现也只是未来才会发生的事情. Christianheilmann的一些技巧,现在就可以令你的网站访问起来更为流畅。

        页面首次访问时的延时是网站和Web应用设计中遇到的一个很重要的问题。用户总是感觉页面相应的不够快。
        为什么用户会有这样的感觉?也许用户还保留多年前那种按分钟计费的接入网方式的使用习惯(现在的饭店或机场还保持那种接入方式);也许是因为用户觉得页面要有足够快的响应才能称得上所谓的信息高速路。但在我看来这是好莱坞的责任。在每部好莱坞的动作大片中:敲击一下键盘的同时,电脑屏幕上就会出现超高分辨率,有着密密麻麻数据显示的精美网站操作界面;而且网站上读取一部百科全书也不过短短几毫秒就可以完成。
        但在现实生活中却完全不是这么回事,因为无论你如何尽量简化你的页面,延迟还是存在的。而且为了使页面更绚丽,通常会使用flash,但如果滥用flash会严重影响页面的响应速度。作为网络应用,还必须保证页面元素的加载顺序,不会因为页面上未完全加载的元素被用户访问而造成异常。

 

哪些因素造成网站响应缓慢?

      当谈到提高网站响应速度,最通常的做法就是尽可能的减少网站文件的尺寸。(这也导致针对JavaScript库文件大小的无休止的讨论,但最终也没什么结果。)实际上,有许多因素会影响到网页初次访问的响应速度:

  • HTML文档的大小。
  • 页面中嵌入的脚本、图像、多媒体元素文档的大小。
  • HTML页面的复杂程度。(浏览器可以很快的展现简单的页面)
  • 用户的接入速度
  • 会被页面访问的第三方内容所在服务器的访问速度。
  • 网站域名及其页面包含的外部域名的DNS解析速度。
  • 用户计算机的性能。(浏览器会因为系统消耗过多的资源在其他任务上而变得响应缓慢)。
  • 服务器的相应速度。

      除了以上的技术上的因素会导致网站响应变慢以外,还有一些人为设计上的因素。例如:为了避免页面加载过程中出现的页面区域错乱和无图像显示;页面被设计为需要页面内容完全加载完毕后才一起显示。

让网站响应便快的方法

       经过实践,以下经验对于解决由于技术和人为因素造成网站响应变慢的问题会有所帮助。

  • 在不影响页面显示质量的前提下,尽可能的优化HTML代码。(这包括在发布页面时,去掉HTML文档中的注释以及冗余的换行标记。但为了保证页面的可读性,这些代码还应当保留在源代码中)
  • 页面中尽可能少的包含其他外部引用,减少文档之间的依赖。(可以将多个脚本放入一个脚本文件,用CSS的sprite技巧将多个小图片合并为一个大图,这样就只需要加载一次)
  • 确保你没有从外部服务器上引用第三方的内容:用一个脚本将远程的RSS源缓存在本地。这样不仅可以避免DNS解析所造成的延时,而且也不会因为外部服务器的宕机影响你的服务。
  • 尽可能的制定图片及包含图片的元素的尺寸。这样可以避免页面展现时由于图片陆续加载而造成页面元素跳动的现象。
  • 在页面的末端加载大的脚本,这样页面的可以在大的脚本加载完成前展示出来。如果把大的脚本在页面头元素中加载,则浏览器会等到脚本完全加载完成后才显示页面内容。

web开发准则与提高响应速度

        可惜上文提到的这些计巧与我们通常认为的web开发的准则有冲突。例如减少页面包含文件数量会造成产品的可维护性变差。为了使网站的不用页面(首页,文章页,存档页)保持不同的页面风格最简单的方法是不同类型的页面的特殊的样式存放在他们各自的样式文件中。一个页面可以有一个最基本的样式文件,然后根据页面的不同类型再包含该类型页面的指定的样式文件。
       脚本的存放也可以用相同的方法,将功能相近的脚本放到一个文件中。这样有助于代码的维护。你不用察看所有的脚本代码就可以很快的找到你需要的函数。此外,将脚本加入到页面的主体部分通常被认为是不良的编码习惯,因为他将用户的行为控制逻辑嵌入的页面的结构中。

        幸好有技术方案可以解决这些问题。


用一个包含来引用多个样式或脚本。

       爱德华艾略特提出的解决方法是用一个PHP的脚本将多个CSS样式或脚本整理成单一的档案。这个脚本对于javascript还可以调用DouglasCrockford’s的JSmin进行压缩。这个脚本使用很简单,而且可以缓存归并后的文件,直到这些被归并的文件被修改。这就意味着当你修改被归并的某个文件后,脚本会自动重新打包缓存。这样就很简单的解决了代码维护和页面响应速度间的矛盾。

解决页面加载的问题

       另一个棘手的问题是,嵌入在页面头元素的脚本,必要要等页面加载完成后才能被调用。这样就会有些延时 ,而且还会产生问题。

        延时是由于浏览器加载,解析和展现文档的方式造成的。当你用window的onload事件加载脚本时,浏览器的处理顺序是这样的:

  • 解析HTML代码装载外部脚本和样式表
  • 执行被解析后的脚本
  • 建立HTML的DOM树
  • 装载图片和其它外部引用内容
  • 页面装载完毕

       在大多数情况下这样的加载会比较慢,而有些步骤需要提前。许多聪明的程序员致力于解决这个问题,不时的会有新的解决方案出现。大多数的javascript脚本都会有针对onAvailable或onDocumentReady的事件处理。这类事件会在部分文档装载完成后就会被触发,而不用等到大量图片被加载。但通过实践和反复测试,针对旧的浏览器和操作系统并没有无懈可击的解决方案。但我相信只要我们继续努力,再加上那么点运气一定会找到最终的解决方案的。

        对于web应用由于调用未加载完成的元素而导致异常是很致命的问题。如果这类问题时发生在页面美化部分,则会有一些解决方法。


为了解决一次加载过多内容的问题,可以采按需分别加载内容。


       为了更好的装饰页面一次载入大量的内容,往往会产生问题。大量的内容有可能是每个标签中都包含过多的文字或者是一个有四级的导航栏。运用javacript脚本可以很轻松的动态展示这些内容。但是如果脚本被禁用,则这些动态内容就会失去样式而被打乱,无法正确地展示,这当然不是一个好主意。页面也没有必要一次将所有的动态展示内容都一次加载,这样会增加页面载入的负载。

       解决方法是当用户触发标签时再用javascript动态的加载显示的内容。当用户关闭脚本后也会显示一个基本的静态文本。

       用什么方法来加载额外的内容取决于你需要引用的是什么。最简单的方法是动态的生成脚本标签。这是一个很早就有的方法,被用来引入大量的javascript数据集或在页面加载后再引入脚本。

function pull(){
  var s = document.createElement('script');
  s.type = 'text/javascript';
  s.src = 'largeJavaScriptBlock.js';
 document.getElementsByTagName('head')[0].appendChild(s);
}
window.onload = pull;

       del.icio.us页面就到这种方法来引入由json返回的数据。由于json返回的不过是一堆javascript代码,你可以在页面装载完成后,生成javascript脚本标签包含这些代码;然后执行这些代码原来替换页面中某个元素的内容。Dishy作为封装了json的对象可以让你很轻松的完成这些。另一个列子是不太显眼的Flickr头像,Flickr用json输出显示你最新相片,当用户禁用脚本,哪个位置显示的只是一个链接。

        如果你要引入的是非javascript的内容,你可以使用Ajax或者AHAH或者Hijax或者其他不包含xml的ajax(你愿意把称作什么名称都可以)。例如,一个用ajax实现的导航,它甚至可以根据用户需要可选择的加载更为复杂的界面。


Imaging trickery 图像显示技巧

       最后一个方法的渊源会追溯到可能你还没开始接触网站开发时。那时浏览器大战中最为ie的竞争对手苦命的Netscape(但在我看来那时还是不错的)浏览器支持一个自定义的HTML属性‘lowsrc’,这个属性可以指定一个小图片提前加载作为大图载入时的替代显示图片。这样即使用户的接入速度很慢,也可以看到即将呈现图片的一个预览。
       你可以重用这一想法,当页面加载时不要嵌入过大的图片而是载入更为规范化的小图片;等页面加载完成后再用大图片进行替换。你甚至可以简化到开始只载入背景色,然后等页面载入完成再用javascript或者DOM加载原图进行覆盖。
        这种方法还适用于你需要从多个服务器取得许多不能被缓存的图片。(例如gravatars)通常可以先载入一个占位的图片,等页面加载完成后再动态取得分散在其他服务器上的小图片。

分享到:
评论

相关推荐

    wordpress网站静态缓存提速方案-功能非常强大操作简单

    wordpress网站插件静态缓存提速方案-功能非常强大操作简单,之前用过很多的 WORDPRESS 的网站提速方案,常用的图片和静态文件 CDN 加速就不说了, 这个是基础。今天我要分享是 HTML 页面的提速。 如图设置好插件启动...

    网站建设方案书

    文章预示着网站建设的前景广阔,随着网络的不断提速和宽带网建设不断加快,互联网将继续成为现代社会最快捷高效的信息获取手段,为企业带来无限的商业机遇和商业利益。 网站建设方案书知识点概括了网站建设的目标、...

    用 Apache 为WebLogic 提速

    4. **Apache安装文件准备**:从Apache官方网站下载最新版本的安装文件,并按照官方文档进行安装配置。 #### 六、总结 通过将Apache作为WebLogic的前端代理服务器,可以有效解决基于WebLogic部署中存在的多个问题,...

    网络超强提速工具(最高40倍提速)

    总的来说,"网络超强提速工具"提供了一种潜在的解决方案,帮助用户改善网络体验。但同时,我们也应该意识到,网络速度的提升并非一蹴而就,它涉及多方面的因素,用户在追求速度的同时,也需要关注网络的安全和稳定性...

    智能提速系统平台的分析与设计.pdf

    智能提速系统平台是一种基于人工智能和现代通信技术的解决方案,旨在提升网络服务质量,满足用户对于高速网络的即时需求。随着4G通信技术和互联网应用的普及,用户对于在线视频质量、网络游戏体验以及多样化的流媒体...

    宽带加速 让宽带提速的工具

    7. **硬件升级**:如果以上方法都无法满足需求,考虑升级网络硬件,比如更换更高带宽的宽带接入方案,或者升级内部网络设备,如增加网络接口卡(NIC)的带宽。 总之,宽带加速是一个综合性的过程,涉及到网络设备、...

    PHP应用提速面面观

    - **兼容性问题**:确保所选择的优化方案与当前环境兼容; - **安全性考量**:任何性能提升措施都应建立在不降低系统安全性的基础上; - **监控与调整**:定期检查并分析系统性能指标,根据实际情况适时调整优化策略...

    0.1秒的价值!浅谈Web前端页面提速问题

    【网页加载速度优化策略】 ...优化页面加载速度是一个持续的过程,需要不断调整和测试,以找到最适合网站的最佳方案。记住,用户体验始终是设计和开发的核心,快速响应的页面是赢得用户青睐的关键。

    电脑优化提速

    ### 电脑优化提速知识点 #### 一、日常电脑优化与清理 **1. 每日清理** - **操作步骤:** 在每日关机前,执行系统清洁工作。 - **具体做法:** 清理临时文件、缓存数据等占用磁盘空间的文件。 - **目的意义:** ...

    游戏音乐娱乐类网站源码-紫粉娱乐演艺公司响应式网站模板-支持移动端.zip

    面向数字娱乐市场的HTML网站源码,为开发提速。这份源码针对娱乐游戏音乐领域,提供即用型解决方案,减少从头开发的繁琐流程。精心设计的界面与用户交互元素,保证吸引目标用户群体。集成的音乐播放功能,提升用户...

    怎么给您的XP提速.docx

    - 访问Intel官方网站下载最新版本的Intel Application Accelerator,并按照指示完成安装。 **2. 安装相应的补丁程序** - 对于非Intel芯片组的主板,安装相应的补丁程序(如VIA的4in1程序)可以改善系统性能。 **3...

    游戏音乐娱乐类网站源码-娱乐资讯主题响应式网页模板-支持移动端.zip

    面向数字娱乐市场的HTML网站源码,为开发提速。这份源码针对娱乐游戏音乐领域,提供即用型解决方案,减少从头开发的繁琐流程。精心设计的界面与用户交互元素,保证吸引目标用户群体。集成的音乐播放功能,提升用户...

    游戏音乐娱乐类网站源码-游戏应用商店网站模板-适配手机端.zip

    面向数字娱乐市场的HTML网站源码,为开发提速。这份源码针对娱乐游戏音乐领域,提供即用型解决方案,减少从头开发的繁琐流程。精心设计的界面与用户交互元素,保证吸引目标用户群体。集成的音乐播放功能,提升用户...

    游戏音乐娱乐类网站源码-在线音乐发布响应式网站模板-支持移动端.zip

    面向数字娱乐市场的HTML网站源码,为开发提速。这份源码针对娱乐游戏音乐领域,提供即用型解决方案,减少从头开发的繁琐流程。精心设计的界面与用户交互元素,保证吸引目标用户群体。集成的音乐播放功能,提升用户...

    游戏音乐娱乐类网站源码-勇士游戏展示响应式网站模板-支持移动端.zip

    面向数字娱乐市场的HTML网站源码,为开发提速。这份源码针对娱乐游戏音乐领域,提供即用型解决方案,减少从头开发的繁琐流程。精心设计的界面与用户交互元素,保证吸引目标用户群体。集成的音乐播放功能,提升用户...

    游戏音乐娱乐类网站源码-最新电影资讯响应式网站模板-支持移动端.zip

    面向数字娱乐市场的HTML网站源码,为开发提速。这份源码针对娱乐游戏音乐领域,提供即用型解决方案,减少从头开发的繁琐流程。精心设计的界面与用户交互元素,保证吸引目标用户群体。集成的音乐播放功能,提升用户...

    游戏音乐娱乐类网站源码-音乐专辑收藏响应式网站模板-支持移动端.zip

    面向数字娱乐市场的HTML网站源码,为开发提速。这份源码针对娱乐游戏音乐领域,提供即用型解决方案,减少从头开发的繁琐流程。精心设计的界面与用户交互元素,保证吸引目标用户群体。集成的音乐播放功能,提升用户...

    借助Disk SpeedUP工具 整理磁盘为本本提速.docx

    1. **下载与安装**:首先,从官方网站或其他可信渠道下载DiskSpeedUP安装包,并按照提示完成安装过程。 2. **语言设置**:启动DiskSpeedUP后,进入“设置”界面,在“Language”(语言)选项中选择“Chinese”...

    游戏音乐娱乐类网站源码-音乐演唱会策划响应式网站模板-支持移动端.zip

    面向数字娱乐市场的HTML网站源码,为开发提速。这份源码针对娱乐游戏音乐领域,提供即用型解决方案,减少从头开发的繁琐流程。精心设计的界面与用户交互元素,保证吸引目标用户群体。集成的音乐播放功能,提升用户...

    卡通风格网站HTML源码-卡通创作工作室响应式网站模板-响应式.zip

    面向幼儿教育市场的HTML网站源码,为开发提速。这份源码针对卡通可爱幼教领域,提供即用型解决方案,减少从头开发的繁琐流程。精心设计的界面与用户交互元素,保证吸引目标用户群体。集成的卡通风格模板,提升用户...

Global site tag (gtag.js) - Google Analytics