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

可能影响网站加载速度的页面内容因素

继上篇的“影响网站加载速度之服务器端因素分析”之后,达闻今天要分享的是影响网站在家速度页面内容上的因素。如果对服务器端的可控性不大,那我们也可以看看在网站页面内容上,我们能进行怎样的操作来加快页面加载速度。1,尽量减少重定向尽管网站运营

继上篇的“影响网站加载速度之服务器端因素分析”之后,达闻今天要分享的是影响网站在家速度页面内容上的因素。

如果对服务器端的可控性不大,那我们也可以看看在网站页面内容上,我们能进行怎样的操作来加快页面加载速度。

1,尽量减少重定向

尽管网站运营过程中有许多的理由需要用到使用到重定向(redirect),但是在条件允许时,建议尽可能避免。

重定向会导致额外HTTP请求应答的往返传输时间(RTT),也在延长用户的等待时间。因此,除非不得已(如技术上需求),尽量避免使用重定向,或者尝试其它替代的解决方案。

注意:尽量不要在页面里链接一个会发生重定向的URL

不要进行多次重定向,比如A redirect to B and re-redirect to C

不要重定向到打不开的页面(404页面)

避免使用外部文件而产生重定向

2,将查询字符串从静态资源中删除

就算设置了 Cache-Control: public 来指定响应能由客户端和代理进行缓存,大部分的代理服务器不会把带”?”号的URL进行缓存。因此,静态资源中避免查询字符串(把问号去掉)出现,或用encode过的参数来替换原来的,来让代理来缓存这些资源,节省每次重新解析的时间。

3,指定字符集

在HTML页面的头部指定字符集,有助于浏览器立即开始解析HTML代码。在HTML代码的位置添加一段简单的代码便能实现:如

浏览器根据获得的字符集,把编码解析为可以显示在屏幕上的字符。如果浏览器不能获知页面的编码字符集,一般都会在执行脚本和渲染页面前,把字节流缓存,然后再搜索可进行解析的字符集,或以默认的字符集来解析页面代码,这会导致浪费时间。为了避免浏览器把时间浪费在搜寻合适的字符集来进行解码,最好在页面之初就指定字符集,任何大于1K字节的HTML文档更应如此(因为浏览器对此一般都是缓存1K以内)。

4,压缩HTML代码

压缩HTML代码可以减少页面文件体积从而提高页面下载速度

减小HTML代码有几种主要方式:

删掉多余的空格和空行

删掉网站建设或维护过程中产生的注释,或动态程序产生的一些垃圾代码

使用DIV+CSS取代老式的Table布局。

现在已经有很多在线工具可以帮助压缩HTML代码,如 HTML Minifier

5,避免出现错误请求

出现404或410等错误的死链接会导致多余的请求而浪费时间。随着网站的更新,难免会出现一些资源文件或者页面被移除或者改名,这就造成了错误请求。错误请求不但会弱化用户体验,还可能对页面加载时间造成影响,比如Javascript和CSS会阻断浏览器的正常解析,甚至造成不能正常访问。

一个简单可行的解决方法是安装Google Webmaster工具,它会自动给你分析出哪些资源文件是不可访问的,直接去改了就行。对于一个成熟的网站来讲,CMS里也应该有自检测错误链接的功能,这样才能及时更新或同步最新的资源。同时工具也是必不可少的,如死链接查询工具:Xenu’s Link Sleuth。

6,由同一网址提供资源

从唯一的URL来调用资源是非常重要的,可以消除重复下载造成的额外往返消耗。在网页中经常重复用到同一资源(如图片文件,CSS,js文件),每个资源文件都只应该有一个唯一的URL与之对应,这样可以让浏览器避免重复加载同样的内容,而缩减整体的加载时间。另外,大部分的浏览器不管资源是否可缓存,也不会在同一session里对同样的URL发起HTTP请求,因此可以节约往返时间。

注意:同一资源不要通过不同的主机名来调用,从而避免DNS lookup的时间。对于相对URL和绝对URL来说,如果主机名默认唯一,那就算同一URL。比如abc.com/images/1.jpg 和/images/1.jpg是同一URL。但要注意避免子域名sub.abc.com下的页面用到/images/1.jpg这种情况,很可能不是初衷abc.com/images/1.jpg。

7,减少DNS查询次数

尽量减少从不同独立主机请求的DNS解析次数,从而减少RTT延迟时间。当浏览器与Web服务器建立连接时,它需要进行DNS解析,将域名解析为IP地址。由于DNS解析结果可以缓存在客户端的浏览器和系统里,如果记录有效的话就可以减少重新请求时间。然而,一旦客户端需要执行DNS lookup时,等待时间将会取决于域名服务器的有效响应的速度。虽然所有的ISP的DNS服务器都能缓存域名和IP地址映射表,但如果缓存的DNS记录过期了而需要更新,则可能需要通过遍历多个DNS节点,有时候需要通过全球范围内来找到可信任的域名服务器。一旦域名服务器工作繁忙,请求解析时就需要排队,则进一步延迟等待时间。换句话说,虽然域名解析需要1个RTT的时间来完成,但实际时间经常取决于DNS的排队等待和解析时间。因此,减少DNS的查询次数非常重要,页面加载时就尽量避免额外耗时。为了减少DNS查询次数,最好的解决方法就是在页面中减少不同的域名请求的机会。

工具推荐:Pingdom Tools


推荐阅读
  • Iwouldliketobeabletohaveasidebarthatcanbetoggledinandoutonabuttonpress.However ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 前言对于从事技术的人员来说ajax是这好东西,都会使用,而且乐于使用。但对于新手,开发一个ajax实例,还有是难度的,必竟对于他们这是新东西。leo开发一个简单的ajax实例,用的是 ... [详细]
  • 表单提交前的最后验证:通常在表单提交前,我们必须确认用户是否都把必须填选的做了,如果没有,就不能被提交到服务器,这里我们用到表单的formname.submit()看演示,其实这个对于我们修炼道 ... [详细]
  • Itwasworkingcorrectly,butyesterdayitstartedgiving401.IhavetriedwithGooglecontactsAPI ... [详细]
  • 但有时候,需要当某事件触发时,我们先做一些操作,然后再跳转,这时,就要用JAVASCRIPT来实现这一跳转功能。下面是具体的做法:一:跳转到新页面,并且是在新窗口中打开时:复制代码代码如下:fu ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 我有使用googledrivepdf的共享链接,我必须使用angular7下载pdf文件。我已经完成了自欺 ... [详细]
  • 用JavaScript实现的太空人手表
    用JavaScript实现的太空人手表-JS写的太空人手表,没有用canvas、svg。主要用几个大的函数来动态显示时间、天气这些。天气的获取用到了AJAX请求。代码中有详细的注释 ... [详细]
author-avatar
舍舍与你-6
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有