Web前端优化最佳实践之内容篇

Web前端优化最佳实践及工具集锦

2015/03/11 · JavaScript
· Web开发,
工具

原文出处: CSDN 王果
编译整理   

前端的性能对于一个Web应用来说非常重要,如果一个Web应用的页面加载速度非常快、对于用户的操作可以及时响应,那么产品的用户体验将会极大地提升。下图显示了页面加载速度对于用户体验的影响。

图片 1

你的Web页面的速度是否已经足够快了?其实可能还有很多可以提升的地方。Google和雅虎也提出了一些Web应用的前端优化建议,并发布了一些工具,你可以逐一检验你的Web应用,以便达到更高的性能。

这些优化不仅仅可以给用户提供更好的体验,从开发者角度来说,进行优化还可以减少页面的请求数、降低请求所占的带宽、减少资源的浪费。

下面来看看Google和雅虎提供的Web页面优化最佳实践。

1. 尽量减少 HTTP 请求 (Make Fewer HTTP Requests)

10款让Web前端开发人员生活更轻松的实用工具。每个Web开发人员都有自己的工具箱,这样工作中碰到的每个问题都有一个好的解决方案供选择。

一、Web前端优化最佳实践之 内容

一、Google的Web优化最佳实践

1.  避免坏请求

有时页面中的HTML或CSS会向服务器请求一个不存在的资源,比如图片或HTML文件,这会造成浏览器与服务器之间过多的往返请求,类似于:

  • 浏览器:“我需要这个图像。”
  • 服务器:“我没有这个图像。”
  • 浏览器:“你确定吗?这个文档说你有。”
  • 服务器:“真的没有。”

图片 2

如此一来,会降低页面的加载速度。因此,检查页面中的坏链接非常有必要,你可以通过 Google的PageSpeed工具 来检测,找到问题后,补充相应的资源文件或者修改资源的链接地址即可。

2.  避免CSS
@import

使用 @import方法引用CSS文件可以能会带来一些影响页面加载速度的问题,比如导致文件按顺序加载(一个加载完后才会加载另一个),而无法并行加载。

你可以使用 CSS
delivery工具 来检测页面代码中是否存在@import方法。比如,如果检测结果中存在

CSS

@import url(“style.css”)

1
@import url("style.css")

则建议你使用下面的代码来替代。

XHTML

<link rel=”style.css” href=”style.css” type=”text/css”>

1
<link rel="style.css" href="style.css" type="text/css">

3.  避免使用document.write

在JavaScript中,可以使用 document.write在网页上显示内容或调用外部资源,而通过此方法,浏览器必须采取一些多余的步骤——下载资源、读取资源、运行JavaScript来了解需要做什么,调用其他资源时需要重新再执行一次这个过程。由于浏览器之前不知道要显示什么,所以会降低页面加载的速度。

要知道,任何能够被document.write调用的资源,都可以通过HTML来调用,这样速度会更快。检查你的页面代码,如果存在类似于下面的代码:

JavaScript

document.write(‘<script src=”another.js”></script>’);

1
document.write(‘<script src="another.js"></script>’);

建议修改为:

XHTML

<script src=”another.js”></script>

1
<script src="another.js"></script>

4.  合并多个外部CSS文件

在网站中每使用一个CSS文件,都会让你的页面加载速度慢一点点。如果你有一个以上的CSS文件,你应该将它们合并为一个文件。

你可以通过  CSS
delivery工具 来检测页面代码中的CSS文件,然后通过复制粘贴的方式将它们合并为一个。合并后记得修改页面中的引用代码,并删除旧的引用代码。

图片 3

5.  合并多个外部JavaScript文件

大部分情况下,网站往往会包含若干个 JavaScript文件,但并不需要将这些文件都独立出来,其中有些是可以合并为一个文件的。

你可以通过 resource
check工具 来检测页面中所引用的JavaScript文件数,然后可以通过复制粘贴的方式将多个文件合并为一个。

6.  通过CSS
sprites来整合图像

如果页面中有6个小图像,那么浏览器在显示时会分别下载。你可以通过CSS
sprites将这些图像合并成1个,可以减少页面加载所需的时间。

CSS
sprites需要有两个步骤:整合图像、定位图像。比如你可以通过下面的代码来分别定位下面图像中的上下两部分。

CSS

.megaphone {width:50px; height:50px; background:url(images/sprite.png) 0
0px;} .smile {width:50px; height:50px; background:url(images/sprite.png)
0 -50px;}

1
2
.megaphone {width:50px; height:50px; background:url(images/sprite.png) 0 0px;}
.smile {width:50px; height:50px; background:url(images/sprite.png) 0 -50px;}

图片 4

7. 延迟JavaScript的加载

浏览器在执行JavaScript代码时会停止处理页面,当页面中有很多JavaScript文件或代码要加载时,将导致严重的延迟。尽管可以使用defer、异步或将JavaScript代码放到页面底部来延迟JavaScript的加载,但这些都不是一个好的解决方案。

下面是Google的建议。

JavaScript

<script type=”text/javascript”> function downloadJSAtOnload() {
var element = document.createElement(“script”); element.src =
“defer.js”; document.body.appendChild(element); } if
(window.addEventListener) window.addEventListener(“load”,
downloadJSAtOnload, false); else if (window.attachEvent)
window.attachEvent(“onload”, downloadJSAtOnload); else window.onload =
downloadJSAtOnload; </script>

1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "defer.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>

这段代码的意思是等待页面加载完成后,然后再加载外部的“defer.js”文件。下面是测试结果。

图片 5

8.  启用压缩/
GZIP

使用gzip对HTML和CSS文件进行压缩,通常可以节省大约50%到70%的大小,这样加载页面只需要更少的带宽和更少的时间。

你可以通过这个 Gzip压缩工具 来检测页面是否已经经过Gzip压缩。

9.  启用Keep-Alive

HTTP协议采用“请求-应答”模式,当使用普通模式(非KeepAlive模式)时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议);当使用 Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。

在HTTP 1.0中Keep-Alive默认是关闭的,需要在HTTP头中加入“Connection:
Keep-Alive”,才能启用Keep-Alive;在
HTTP1.1中Keep-Alive默认启用,加入“Connection:
close”可关闭。目前大部分浏览器都是用HTTP
1.1协议,也就是说默认都会发起Keep-Alive的连接请求了,所以是否能完成一个完整的Keep-
Alive连接就看Web服务器的设置情况。

10.  将小的CSS和JavaScript代码内嵌到HTML中

如果你的CSS代码比较小,可以将这部分代码放到HTML文件中,而不是一个外部CSS文件,这样可以减少页面加载所需的文件数,从而加快页面的加载。同样,也可以将小的
JavaScript脚本代码内嵌到HTML文件中。

XHTML

<style type=”text/css”> <!–CSS代码–> </style>
<script type=”text/javascript”> <!–JavaScript代码–>
</script>

1
2
3
4
5
6
7
<style type="text/css">
<!–CSS代码–>
</style>
 
<script type="text/javascript">
<!–JavaScript代码–>
</script>

11.  利用浏览器缓存

在显示页面时,浏览器需要加载logo、CSS文件和其他一些资源。浏览器缓存所做的工作就是“记住”已经加载的资源,让页面的加载速度更快。

12.  压缩CSS代码

不管你在页面中如何使用CSS,CSS文件都是越小越好,这会帮助你提升网页的加载速度。你可以通过 Minify
CSS工具 来压缩你的CSS代码。

压缩前:

CSS

body { background-color:#d0e4fe; } h1 { color:orange;
text-align:center; }

1
2
3
4
5
6
7
8
9
body
{
background-color:#d0e4fe;
}
h1
{
color:orange;
text-align:center;
}

压缩后:

CSS

body {background-color:#d0e4fe;} h1 {color:orange;text-align:center;}

1
2
body {background-color:#d0e4fe;}
h1 {color:orange;text-align:center;}

13.  尽量减少DNS查询次数

当浏览器与Web服务器建立连接时,它需要进行DNS解析,将域名解析为IP地址。然而,一旦客户端需要执行DNS
lookup时,等待时间将会取决于域名服务器的有效响应的速度。

虽然所有的ISP的DNS服务器都能缓存域名和IP地址映射表,但如果缓存的DNS记录过期了而需要更新,则可能需要通过遍历多个DNS节点,有时候需要通过全球范围内来找到可信任的域名服务器。一旦域名服务器工作繁忙,请求解析时就需要排队,则进一步延迟等待时间。

因此,减少DNS的查询次数非常重要,页面加载时就尽量避免额外耗时。为了减少DNS查询次数,最好的解决方法就是在页面中减少不同的域名请求的机会。

你可以通过 request
checker工具 来检测页面中存在多少请求,然后进行优化。

14.  尽量减少重定向

有时为了特定需求,需要在网页中使用重定向。重定向的意思是,用户的原始请求(例如请求A)被重定向到其他的请求(例如请求B)。

但是这会造成网站性能和速度下降,因为浏览器访问网址是一连串的过程,如果访问到一半而跳到新地址,就会重复发起一连串的过程,这将浪费很多的时间。所以我们要尽量避免重定向,Google建议:

  • 不要链接到一个包含重定向的页面
  • 不要请求包含重定向的资源

15.  优化样式表和脚本的顺序

Style标签和样式表调用代码应该放置在JavaScript代码的前面,这样可以使页面的加载速度加快。

XHTML

<head> <meta name=description content=”description”/>
<title>title</title> <style> page specific css code
goes here </style> <script type=”text/javascript”>
javascript code goes here </script> </head>

1
2
3
4
5
6
7
8
9
10
<head>
<meta name=description content="description"/>
<title>title</title>
<style>
page specific css code goes here
</style>
<script type="text/javascript">
javascript code goes here
</script>
</head>

16.  避免JavaScripts阻塞渲染

浏览器在遇到一个引入外部JS文件的<script>标签时,会停下所有工作来下载并解析执行它,在这个过程中,页面渲染和用户交互完全被阻塞了。这时页面加载就会停止。

谷歌 建议 删除干扰页面中第一屏内容加载的JavaScript,第一屏是指用户在屏幕中最初看到的页面,无论是桌面浏览器、手机,还是平板电脑。

图片 6

17.  缩小原始图像

如果无需在页面中显示较大的图像,那么就建议将图像的实际大小缩小为显示的大小,这样可以减少下载图像所需的时间。

18.  指定图像尺寸

当浏览器加载页面的HTML代码时,有时候需要在图片下载完成前就对页面布局进行定位。如果HTML里的图片没有指定尺寸(宽和高),或者代码描述的尺寸与实际图片的尺寸不符时,浏览器则要在图片下载完成后再“回溯”该图片并重新显示,这将消耗额外的时间)。

所以,最好为页面中的每一张图片都指定尺寸,不管是在HTML里的<img>标签中,还是在CSS中。

更多信息: 

作为第一条,可能也是最重要的一条。根据 Yahoo!
研究团队的数据分析,有很大一部分用户访问会因为这一条而取得最大受益。有几种常见的方法能切实减少
HTTP 请求:

对于每一项工作,开发人员需要特定的辅助工具,所以如果下面这些工具对于你来说都是新的领域,那么这篇文章是非常有用的,因为这些实用的工具将让你的工作更有效率。

  1. 尽量减少HTTP请求;

二、雅虎的Web优化最佳实践

1.  内容优化

  • 尽量减少HTTP请求:常见方法包括合并多个CSS文件和JavaScript文件,利用CSS Sprites整合图像,Image
    map(图像中不同的区域设置不同的链接),内联图象(使用  data: URL scheme 在实际的页面嵌入图像数据)等。
  • 减少DNS查找
  • 避免重定向
  • 使Ajax可缓存
  • 延迟加载组件:考虑哪些内容是页面呈现时所必需首先加载的、哪些内容和结构可以稍后再加载,根据这个优先级进行设定。
  • 预加载组件:预加载是在浏览器空闲时请求将来可能会用到的页面内容(如图像、样式表和脚本)。当用户要访问下一个页面时,页面中的内容大部分已经加载到缓存中了,因此可以大大改善访问速度。
  • 减少DOM元素数量:页面中存在大量DOM 元素,会导致JavaScript遍历DOM的效率变慢。
  • 根据域名划分页面内容:把页面内容划分成若干部分可以使你最大限度地实现平行下载。但要确保你使用的域名数量在2个到4个之间(否则与第2条冲突)。
  • 最小化iframe的数量:iframes
    提供了一个简单的方式把一个网站的内容嵌入到另一个网站中。但其创建速度比其他包括JavaScript和CSS的DOM元素的创建慢了1-2个数量级。
  • 避免404:HTTP请求时间消耗是很大的,因此使用HTTP请求来获得一个没有用处的响应(例如404没有找到页面)是完全没有必要的,它只会降低用户体验而不会有一点好处。

2. 服务器优化

  • 使用内容分发网络(CDN):把你的网站内容分散到多个、处于不同地域位置的服务器上可以加快下载速度。
  • 添加Expires或Cache-Control信息头:对于静态内容,可设置文件头过期时间Expires的值为“Never
    expire(永不过期)”;对于动态内容,可使用恰当的Cache-Control文件头来帮助浏览器进行有条件的请求。
  • Gzip压缩
  • 设置ETag:ETags(Entity
    tags,实体标签)是web服务器和浏览器用于判断浏览器缓存中的内容和服务器中的原始内容是否匹配的一种机制。
  • 提前刷新缓冲区:当用户请求一个页面时,服务器会花费200到500毫秒用于后台组织HTML文件。在这期间,浏览器会一直空闲等待数据返回。在PHP中,可以使用flush()方法,它允许你把已经编译的好的部分HTML响应文件先发送给浏览器,这时浏览器就会可以下载文件中的内容(脚本等)而后台同时处理剩余的HTML页面。
  • 对Ajax请求使用GET方法:当使用XMLHttpRequest时,浏览器中的POST方法会首先发送文件头,然后才发送数据。因此使用GET最为恰当。
  • 避免空的图像src

3. Cookie优化

  • 减小cookie大小:去除不必要的coockie,并使coockie体积尽量小以减少对用户响应的影响
  • 针对Web组件使用域名无关的Cookie:对静态组件的Cookie读取是一种浪费,使用另一个无Cookie的域名来存放静态组件是一个好方法,或者也可以在Cookie中只存放带www的域名。

4. CSS优化

  • 将CSS代码放在HTML页面的顶部
  • 避免使用CSS表达式:CSS表达式在执行时候的运算量非常大,会对页面性能产生大的影响
  • 使用<link>来代替@import
  • 避免使用Filters:IE独有属性AlphaImageLoader用于修正IE
    7以下版本中PNG图片的半透明效果,但它的问题在于浏览器加载图片时它会终止内容的呈现并且冻结浏览器。

5. JavaScript优化

  • 将JavaScript脚本放在页面的底部
  • 将JavaScript和CSS作为外部文件来引用:在实际应用中使用外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏览器中产生缓存。
  • 缩小JavaScript和CSS
  • 删除重复的脚本
  • 最小化DOM的访问:使用JavaScript访问DOM元素比较慢
  • 开发智能的事件处理程序

6. 图像优化

  • 优化图片大小
  • 通过CSS
    Sprites优化图片
  • 不要在HTML中使用缩放图片
  • favicon.ico要小而且可缓存

7. 针对移动优化

  • 保持组件大小在25KB以下:主要是因为iPhone不能缓存大于25K的文件(注意这里指的是解压缩后的大小)。
  • 将组件打包成为一个复合文档:把页面内容打包成复合文本就如同带有多附件的Email,它能够使你在一个HTTP请求中获取多个组件。

更多信息:(中文翻译)

1、合并文件,比如把多个 CSS 文件合成一个;

神器推荐:
《让网页舞动起来!25个免费的视差滚动插件》
《高端干货!PHOTOSHOP实用脚本大合集》
《一行代码都不写!完成简单网页的设计上传发布》

合并文件,比如把多个css文件合成一个;
CSS Sprites 利用CSS background 相关元素进行背景图绝对定位;
图像地图 (在一个图像上划分不同区域映射不同的链接);
内联图像(使用data:URL scheme 在实际的页面嵌入图像数据);

三、一些工具

1.  Google PageSpeed

Google提供了 PageSpeed工具,这是一个浏览器插件,可以很好地应用上文中Google所提到的Web优化实践——帮助你轻松对网站的性能瓶颈进行分析,并为你提供优化建议。

  • 在线分析你的网站
  • 安装浏览器插件( Chrome、 Firefox)
  • 通过 Insights
    API在应用中嵌入PageSpeed功能

2.  雅虎 YSlow

YSlow是雅虎推出的一款浏览器插件,可以帮助你对网站的页面进行分析,并为你提供一些优化建议,以提高网站的性能。

  • Firefox插件
  • Chrome插件
  • YSlow for Mobile/Bookmarklet
  • 源码

3. 其他分析优化工具

  • 蜘蛛模拟器:这个工具可以分析你的页面,并提供一些优化建议。
  • 图像SEO工具:这个工具可以检查图片的alt标签,并提供一些优化建议。
  • 请求检查器:找出页面中需要加载哪些资源和服务。
  • 链接检查器:检查页面中内部、外部和无效链接。
  • HTTP头检查:显示网页或资源的HTTP响应头。
  • 社交检查器:检查页面中的社交组件,比如Google+、Facebook、Twitter、Linkedin和Pinterest。
  • If
    modified检查器:检查页面是否接受 If-Modified-Since
    HTTP头。
  • Gzip检查器:检查页面是否经过了Gzip压缩。
  • CSS
    delivery工具:检查页面中所使用的CSS文件。
  • 面包屑工具:可根据你输入的信息提供面包屑导航的代码。
  • CSS压缩工具:用于压缩CSS代码。

通过以上的优化建议和优化工具,可以轻松找到影响你的Web页面性能的瓶颈,轻松实现Web页面性能的提升。如果你也有Web优化方面的经验,欢迎分享。

赞 3 收藏
评论

图片 7

2、 CSS Sprites 利用 CSS background
相关元素进行背景图绝对定位;参见:CSS Sprites: Image Slicing’s Kiss of
Death

Spritepad

图片 8

借助 SpritePad,你可以在几分钟甚至几秒钟内创建你的CSS
Sprite。只需拖放您的图片,立即可以生成 PNG 精灵图片以及CSS代码。不需要在
Photoshop中操作,不需要编写任何的CSS样式。

  1. 减少DNS查找:

3、 图像地图

Html5test

图片 9

这个 HTML5
测试得分能够提示您正常使用的浏览器对于 HTML5标准和相关规范的支持情况的指标。

DNS查询完成之前浏览器不能从这个主机下载任何任何文件。
方法:DNS缓存、将资源分布到恰当数量的主机名,平衡 并行下载和 DNS查询 ;

4、 内联图象 使用 data: URL scheme 在实际的页面嵌入图像数据.

Spur

图片 10

Spur
是一个有趣和简单的方法来评判网页设计的方式,你从来没有做过的事情。只贴上一个网址(或上传图片),你就可以使用七种不同的工具来帮助你。

  1. 避免重定向:多余的中间访问 (不是绝对的避免,尽量减少)

2. 减少 DNS 查找 (Reduce DNS Lookups)

JPEG Mini

图片 11

能够帮助你把 JPEG 格式照片的文件大小减小5倍,同时保持原有的品质和 JPEG
格式。

定义:重定向用于将用户从一个url重新路由到另一个url;
损伤:重定向的延迟也很严重,因为它延迟了整个html文档的传输,在html文档到达之前,页面中不会呈现出任何东西,也没有任何组件会被下载,在用户与html文档之间插入重定向延迟了页面中的所有东西;

必须明确的一点,DNS 查找的开销是很大的。另外,我倒是觉得这是 Yahoo!
所有站点的通病,Yahoo!主站点可能还不够明显,一些分站点,存在明显的类似问题。对于国内站点来说,如果过多的使用了站外的
Widget ,也很容易引起过多的 DNS 查找问题。

Site Validator

图片 12

由W3C 官方验证对你的网站完成验证,这包括验证你网站中的HTML5标记。

  1. 使Ajax可缓存

3. 避免重定向 (Avoid Redirects)

Codepen

图片 13

CodePen 是一个在线的 HTML、CSS
和JavaScript代码编辑器,能够编写代码并即时预览效果。可以用于在线展示的作品,也可以看到其他人在网页中实现的各种令人惊奇的效果。

Ajax页面缓存是ajax处理数据时对一些重复相同数据进行一个缓存操作,这种设计使客户端对一些静态页面内容的请求,比如图片,css文件,js脚本等,变得更加快捷,提高了页面的响应速度,也节省了网络通信资源;

不是绝对的避免,尽量减少。另外,应该注意一些不必要的重定向。比如对 Web
站点子目录的后面添加个 / (Slash)
,就能有效避免一次重定向。 与
二者之间是有差异的。如果是 Apache
服务器,通过配置 Alias 或mod_rewrite 或是 DirectorySlash
能够消除这个问题。

Brackets

图片 14

Brackets
是一款开源的代码编辑器,专门为前端开发人员和设计师打造,它的核心目标是减少在开发过程中那些效率低下的重复性工作,例如浏览器刷新,修改元素的样式,搜索功能等等。

  1. 非必须组件延迟加载 ,未来所需组件预加载 (异步);

4. 使得 Ajax 可缓存 (Make Ajax Cacheable)

Codekit

图片 15

CodeKit
帮助您更快更好地建立网站。网站右侧的一分钟预告片视频将是一个良好的开始。

6.减少DOM元素数量 ;

响应时间对 Ajax
来说至关重要,否则用户体验绝对好不到哪里去。提高响应时间的有效手段就是
Cache 。其它的一些优化规则对这一条也是有效的。

Patternizer

图片 16

Patternizer 是一个在线工具,帮助您使用在线界面生成基于CSS3的条纹效果。

  1. 切分组件到多个域;

5. 延迟载入组件 (Post-load Components)

CSS3 Click Chart

图片 17

CSS3点击图表是一个方便的CSS3属性参考工具,演示 CSS3
特性的示例代码以及浏览器支持情况的详细信息。

主要的目的是提高页面组件并行下载能力,但不要跨太多域;

6. 预载入组件 (Preload Components)

  1. 最小化iframe的数量

7. 减少 DOM 元素数量 (Reduce the Number of DOM Elements)

iframes 提供了一个简单的方式把一个网站的内容嵌入到另一个网站中。
但我们需要慎重的使用iframe。iframe的创建比其它包括script和css的 DOM
元素的创建慢了 1-2 个数量级;
   使用 iframe 的页面一般不会包含太多 iframe,所以创建 DOM
节点所花费的时间不会占很大的比重。但带来一些其它的问题:onload
事件以及连接池(connection pool)。
Iframes 阻塞页面加载
  及时触发 window 的 onload 事件是非常重要的。onload 事件触发使浏览
器的 “忙” 指示器停止,告诉用户当前网页已经加载完毕。当 onload 事件
加载延迟后,它给用户的感觉就是这个网页非常慢。
  window 的 onload 事件需要在所有 iframe
加载完毕后(包含里面的元素)才会触发。在 Safari 和 Chrome 里,通过
JavaScript 动态设置 iframe 的src 可以避免这种阻塞情况。

8. 切分组件到多个域 (Split Components Across Domains)

杜绝http 404错误;
二. Web前端优化最佳实践之 Server篇

主要的目的是提高页面组件并行下载能力。但不要跨太多域名,否则就和第二条有些冲突了。

使用CDN ;
内容分发网络(CDN)业务是指利用分布在不同区域的节点服务器群组成流量分配管理网络平台,为用户提供内容的分散存储和高速缓存,并根据网络动态流量和负载状况,将内容分发到快速、稳定的缓存服务器上,提高用户内容的访问响应速度和服务的可用性服务。
添加Expires或者Cache-Control信息头 ;
Gzip压缩内容;
能有效减轻网络流量的压力;
配置ETags(Entity Tag 实体标签);
属于HTTP协议的一部分,也就是所有的web服务器都应该(也确实能)支持这个特性。它的作用是用一个特殊的字符串来标识某个资源的“版本”,客户端(浏览器)来请求的时候,可以比较,如果ETag一致,则表示该资源并没有修改过,客户端(浏览器)可以使用自己缓存的版本;
尽早刷新Buffer;
Ajax请求使用GET方法 ;
XMLHttpRequest
POST要两步,而GET只需要一步(注意:在IE上GET能处理的最大url长度是2k);
几个需要补充的地方:
1、“当然,ETag对多数站点性能的影响并不是很大”,应该说ETag在正确使用的情况下,会让大量的请求以304头方式响应,可以相当的节省服务器资源和带宽。
2、对于尽早刷新这点,PHP几乎是做不到的,即使执行了flush以及类似的函数,也要等到请求完全执行之后,才会输出给浏览器端。
3、Ajax使用GET和POST各有好处,GET方式可以更快响应,但是可能会有被浏览器缓存的问题,一般都需要加个随机数来避免,POST方式则不会,so,最好是根据自己的情况分别使用GET和POST
方法;
避免空src的img标签

9. 最小化 iframe 的数量 (Minimize the Number of iframes)

三、Web前端优化最佳实践之 Cookie篇

熟悉 SEO 的朋友知道 iframe 是 SEO 的大忌。针对前端优化来说 iframe
有其好处,也有其弊端,一分为二看问题吧。

缩小Cookie大小;尽量控制cookie的大小,不要塞入一些无用的信息;

10. 杜绝 http 404 错误 (No 404s)

针对Web组件使用域名无关性的Cookie;

这里说的Web组件,多指静态文件,比如图片、CSS等,客户端请求静态文件的时候,减少了Cookie的反复传输对主域名的影响;

四、Web前端优化最佳实践之 CSS篇

把CSS放到代码页上端,浏览器能够有针对性的对HTML页面从上到下进行解析和渲染;
避免CSS表达式 ;
从页面中剥离JavaScript 与
CSS,能够有针对性的对其进行单独的处理策略,比如压缩或者缓存策略;
精简JavaScript 与 CSS (语法能简写的简写);
使用<link> 而不是@import
(在IE中@import指令等同于把link标记写在HTML底部);
避免使用Filter ;

五、Web前端优化最佳实践之 JavaScript篇

将脚本放到HTML代码页底部;
外部引入javascript和css;
压缩javascript和css ;
移除重复脚本 ;
减少DOM访问 ;
1、缓存已经访问过的元素;
2、“离线”更新节点,再将它们添加到树中;
3、避免使用JavaScript输出页面布局–应该是CSS的事儿;
合理设计事件监听器 ;

六、Web前端优化最佳实践之 Image 篇

优化图片:根据实际颜色需要选择色深、压缩 ;
优化css精灵 ;
不要在HTML中拉伸图片 ;
保证favicon.ico小并且可缓存 ;

七、Web前端优化最佳实践之 Mobile(iPhone) 篇

Web前端优化最佳实践最后一部分是针对移动应用的,其实只是针对iPhone的,目前只有两条规则;

对页面链接的充分测试加上对 Web 服务器 error 日志的不断跟踪能有效减少 404
错误,亦能提升用户体验。值得一提的是,CSS 与 Java Script 引起的 404
错误因为定位稍稍”难”一点而往往容易被忽略。

单个数据对象小于25k(Keep Components under 25k);

Apple官方信息指出可缓存到内存中的Web数据对象最大支持到10M,但经过测试,发现也就是25k左右;
Pack Components into a Multipart Document
— 将Web页面组件打包成一个多部分组成的文档,其目的是减少HTTP请求。

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图