热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何减少页面载入时间

为什么80%的码农都做不了架构师?也许是因为越来越多的人用上了大号的水管,前端程序员差不多将网页的优化工作都抛在脑后了。越来越多的widget和j

为什么80%的码农都做不了架构师?>>>   hot3.png

也许是因为越来越多的人用上了大号的水管,前端程序员差不多将网页的优化工作都抛在脑后了。越来越多的 widget 和 Javascript 代码被加在网页上,以致网页越来越慢。瞬间的载入速度让你感觉就像呼吸到一口新鲜空气。程序员有时忽略了一些非常简单的规则,导致降低了用户体验。

页面的载入速度决定用户的情绪,尤其是电子商务网站。以下是一些它之所以这么重要的原因。
快速的载入可以提升用户体验。用户关注页面的载入速度,或自觉或不自觉地。就好比一个球队中的球员,只有当他表现差的时候才会引起关注。
载入迅速的网页让人感觉更清爽。网页的载入速度有可能影响你的搜索引擎排名。Google 已经明确表示他们很关注网页的载入速度,并且会影响到 Adword 网页的索引,所以也不会在排名中占有太大的比重。
慢速则赔钱——载入速度过慢会赶走你的访客。据估计每年电子商务网站都会因载入速度过慢,而损失11亿到13亿的收入。
载入龟速就算是最优秀的网页设计也会被埋没。这里有一些很好的方法和工具可以帮助你建立一个快速流畅的网站。

1. 一个基本的网页分析器

可选的工具有很多,但我总是用“Web Page Analyzer”来检查一般性的错误,并且根据载入速度来判断网站的健康程度。这个分析工具可以显示海量的数据,比如有多少脚本代码、文件有多大等等可能影响到载入速度的因素。(这个工具很小气,100K的图片就警告了 - 译者注)

2. Pingdom

Pingdom 这个网站可以帮你检查损坏的图片链接或链接,测试你的图片和脚本的载入速度。坏链和图片是导致载入缓慢的主要原因。比如,我用这个分析了我的博客LifeDev 后,我找到了一个错误脚本和2张失效的图片。搞定了这些错误后,网站的载入速度快了一倍。

它还有另外一个功能,就是可以看到载入的每一个阶段所用的时间。Pingdom 用不同的颜色表示载入过程的每一个阶段,比如开始连接,载入的第一个字节到最后一个字节等,这样你就可以知道时间究竟是浪费在了哪。

3. 把文件放在本地

虽然这么做会消耗一些带宽,但以本地文件替代照片管理服务(比如 flickr.com),可以省下浏览器从站外下载图片的时间。本地文件总是比外部文件更快。

4. 设置图片的长度和宽度

这是一个正确设置图片长度和宽度的示例:
width=”125″ height=”250″/>
图片的长度和宽度设置与否简直是天壤之别。若设置了长宽,浏览器会在图片未完成下载前先载入其它内容,并且会在网页预留出图片的空间。否则浏览器会等待图片下载完成,再去载入其余的内容。

5. 慎用 widget

即使 widget(窗口小插件,小固件,小器件等等,什么译法都有,这里保留英文 - 译者注)非常酷而且有一些非同寻常的功能,但考虑到牺牲掉的载入速度,忘掉它也应该不难。要是你的网站因 widget 而挂掉的话,赶紧删掉吧。

6. 使用静态缓存

关于缓存可以有很多种解决方案。从本质上讲,缓存就是:把用动态语言(比如 PHP)写出的页面转换成最终的静态的网页。服务器难以置信地擅长处理静态页面。把动态页面转换成静态页面可以减轻服务器负荷,并节省载入的时间。这里有一些流行语言的缓存教程可供参考:

  • PHP
  • Rails
  • Perl
  • Java
  • ASP

7. 加速器

动态语言通常都有脚本帮助加速运行。如果你使用的是 PHP,这些脚本也许有帮助:APC, Zend cache, Xcache

8. Firebug


Firebug 是火狐浏览器的一个扩展插件,内嵌在浏览器内。Firebug 的一大功能就是分析网页的每一方面,特别是载入速度。

9. 优化CSS


减小JS和CSS代码可以大幅改善网页的载入速度。可以使用一些在线服务比如“CSS clean”来优化你的CSS代码,删去一些不必要的东西比如:

  • 空格
  • 换行符
  • 多余的字符
  • 根据级别更多地压缩代码

10. 使用多个域名

如果你的网页上有很多东西,建议多绑定几个域名,比如 server.example.com,server2.example.com,等等。你同时只有有限的链接数到浏览器,如果绑定多个域名(即使使用同一IP)就可以同时下载多个对象。

11. 精简 COOKIE

就像我们的日常饮食,想要保存健康(载入迅速)就不要吃太多的饼干(COOKIE)。多余的 COOKIE 会拖慢每个网页的载入速度。确保你的 COOKIE 已经精简到最小,同时也优化下 COOKIE 的使用。

12. 为 COOKIE 资源使用独立的域名

为了优化 COOKIE 的使用,要为资源使用独立的域名。这对于使用顶级 COOKIE 的人很有帮助,当你从上面下载文件的同时就会附上一个 COOKIE 文件,如果使用不同的域名就可以避免这种情况。例如 Yahoo! 就使用 yimg.com 存放他们的资源。

13. 优化 Javascript


与优化 CSS(#9)的同理,JS代码同样需要优化。使用“Dean Edward’s packer”精简JS代码中冗余的部分。

14. 合并JS文件

通常来说,下载一堆小脚本比下载一个大脚本要慢得多。就是说,合并JS代码可以提升网页的加载速度。最简单的方法就是打开文件复制粘贴代码(很简单吧)。不过,有时还可以更简单一点:

  • PHP
  • Smarty (PHP 模板语言)
  • Rails
  • ASP

15. 使用内容分发网络

如果你的网站有较多的国际访客的话,建议使用内容分发网络(CDN)。内容分发网络可以自动判断访客的位置并选择服务器位置。比如,一头澳大利亚奶牛要通过网络联系中国的远房亲戚,那么网速会卡得她奶都挤不出来。但如果使用内容分发网络,她会被自动登陆到架设在澳大利亚的服务器(或较近的),这样她就会很快发现她的亲戚已经改产三聚氰胺了。

结论

有时新增功能会像花钱一样容易,但根据历史经验,更少就是更多。更少的图片、脚本和 widget 意味着迅速的载入,而迅速的载入则意味这更高的用户体验。


转:https://my.oschina.net/guyson/blog/117630



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
author-avatar
云小白
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有