STAKE中国官方网站看法
Google专家分享网站优化最新手艺
宣布时间:2013-12-23
性能是任何一个网站乐成的要害,,,,,然而,,,,,现在日益富厚的内容和大宗使用 Ajax 的 Web 应用程序已迫使浏览器抵达其处置惩罚能力的极限。。。。。。
性能是任何一个网站乐成的要害,,,,,然而,,,,,现在日益富厚的内容和大宗使用 Ajax 的 Web 应用程序已迫使浏览器抵达其处置惩罚能力的极限。。。。。。在最近举行的O'Reilly Velocity 聚会上,,,,,来自 Google 的工程专家 Colt McAnlis 和 Steve Soulders 分享了最新的前端优化手艺,,,,,包括“镌汰对浏览器 GC 垃圾接纳机制的依赖”和“页面预获取”等。。。。。。
Colt McAnlis 现在是 Google 公司的关注于原生客户端的开发工程师,,,,,在此之前他一经作为一名系统和图形程序员就职于游戏行业的 Blizzard、Ensemble 和 Petroglyph 等公司。。。。。。Colt 讨论息争决了目今移动 Web 开发者们感应最棘手问题之一:JavaScript 的性能。。。。。。由于 JavaScript 剖析引擎使用 GC (垃圾接纳机制)治理内存,,,,,以是基于 Web 的 JavaScript 应用程序可能会遭遇性能问题,,,,,尤其是在移动客户端上。。。。。。McAnlis 告诉 Web 开发者听众: “你们不应该依赖垃圾接纳器。。。。。。”
GC 通过自动将程序不再需要的内存返回到操作系统来资助程序员。。。。。。不过用C和 C++ 等初级别的语言编写代码来治理内存是一个艰辛的历程,,,,,并且不管怎样,,,,,这样的语言不被浏览器所原生支持。。。。。。
许多 JavaScript Web 应用保存的问题是,,,,,JavaScript 引擎会在看似随机的时间执行其垃圾接纳的例行使命,,,,,这样会使得应用程序暂时变慢。。。。。。例如,,,,,视频应用的帧频可能会降低,,,,,或者应用程序执行操作的时间可能会从标准的 3 至 5 毫秒跳跃到可引起人注重的 20 毫秒。。。。。。
McAnlis 引用了一个研究结论说,,,,,总体而言,,,,,若要让 GC 在不被用户察觉的情形下事情,,,,,系统内存至少需要六倍于现在的装备所使用的内存。。。。。。而思量到移动装备有限的内存与其运行的需要大宗内存的应用程序的数目,,,,,这会是一个苛刻的要求。。。。。。
闭包是一种扩大外地界说变量可用性的程序员友好型手艺,,,,,其使用的增添加剧了这一问题。。。。。。例如,,,,,jQuery 是一种被普遍使用的依赖闭包的 JavaScript 库,,,,,其效果是在内存分派中造成大宗的铺张。。。。。。
当提及闭包在其所消耗的内存的量方面是何等的不可展望时,,,,,McAnlis 说:“闭包所引起的问题吓到我了。。。。。。”他建议,,,,,为了提高性能并更好地治理内存,,,,,开发职员应该使用一种类似于中心件库 Emscripten 所使用的要领,,,,,这种要领正被用于构建高性能的 HTML5 Web 游戏。。。。。。
Emscripten 把用C和 C++ 编写的代码转换成 JavaScript, 使其可以从应用程序自身内部治理内存。。。。。。;;;; Emscripten 的程序会预先从系统中分派出一块内存。。。。。。程序员连同 Emscripten 一起决议何时不再需要内存,,,,,并把这部分未使用的内存送还到其内部的可用内存中。。。。。。JavaScript 引擎差池程序做任何垃圾接纳事情,,,,,以是不会影响程序的性能。。。。。。
McAnlis 说,,,,,一样平常而言,,,,,使用这项手艺编写的程序可比典范的 JavaScript 程序的运行速率高两至四倍,,,,,并免于遭受由于 GC 的操作而带来的无意性能滞后。。。。。。
Steve Soulders 认真 Google 公司的 Web 性能和开源组织。。。。。。他是 Firebug 性能剖析扩展工具——YSlow 的创造者,,,,,也是O'ReillyWeb 性能与运作聚会 Velocity 的团结主席。。。。。。他一经在 Yahoo!担当 Chief Performance。。。。。。Steve 在另一个讲座中,,,,,提到了部分新兴浏览器手艺,,,,,这些新兴手艺的作用在于页面被用户请求之前的预获取。。。。。。Soulders 诠释道,,,,,这个想法就是,,,,,浏览器应该能够在用户请求页面之前便预见到其可能想看的下一页。。。。。。“你不知道用户的下一步会是什么,,,,,可是你能从他/她在刚刚请求的页面上的意图找到更多的线索”,,,,,Soulders 说。。。。。。然后他诠释了开发使用这一知识的几种手艺。。。。。。
开发职员可以向一个页面的超链接添加 HTML dns-pre-fetch, pre-fetch 和 pre-render 标签。。。。。。一旦一个页面被加载,,,,,此类标签可以在用户请求之前,,,,,下令浏览器去获取在这个原始页面中被链接的页面的部分内容。。。。。。dns-pre-fetch 标记告诉浏览器查找 Web 页面链接所指向的页面的域名,,,,,pre-fetch 标签告诉浏览器抓取整个页面,,,,,pre-render 告诉浏览器构建整个页面,,,,,就似乎浏览器正在一个隐藏的选项卡上显示这个页面。。。。。。当被安排时,,,,,所有这三个种标签可以缩短请求 Web 页面和显示谁人页面的时间距离。。。。。。
Soulders 忠言开发者要明智地使用这些标签,,,,,由于它们会增添带宽和处置惩罚器的使用率。。。。。。但在许多情形下,,,,,例如在一个上岸或者显示搜索效果的页面上,,,,,有相当高的可能性,,,,,用户将点击其于页面上发明并已经被交付的链接之一。。。。。。差别的浏览器关于这些标签的支持各不相同,,,,,但大大都浏览器制造商似乎在向其即将到来的新版本添加对它们的支持。。。。。。
浏览器自己也有一些加速网页交付速率的要领,,,,,如 DNS 预剖析和 TCP 预毗连。。。。。。使用 DNS 预剖析,,,,,通过视察用户在导航栏中最先键入的字母是什么,,,,,或者甚至通过例行获取用户最常会见的 Web 网站的 IP 地点等操作,,,,,浏览器可以预见到下一个将被会见的站点的域名。。。。。。TCP 预毗连通过类似的手段预见用户的下一步行动。。。。。。Soulders 说,,,,,它通过打起源口并针对一个最终请求设置所有协议,,,,,来“预热”与站点的毗连。。。。。。
提起网站优化,,,,,许多前端开发者会连忙想到 Yahoo 的网站优化准则,,,,,随着研究和手艺的一直生长,,,,,规则也从最初的 14 条增添到了现在的 34 条,,,,,可是最焦点的一些基来源则依然被网站开发者作为圣谕,,,,,包括:
镌汰 HTTP 请求
使用 CDN 手艺
设置 HTTP 文件头逾期缓和存控制字段
启用 Gzip 压缩
只管把样式表放在页面顶部
只管把 Javascript 代码放在页面底部
阻止 CSS 表达式
将 Javascript 和 CSS 外链
镌汰 DNS 查找
阻止重定向
删除重复剧本
设置 Etags
缓存 Ajax
……
Colt McAnlis 现在是 Google 公司的关注于原生客户端的开发工程师,,,,,在此之前他一经作为一名系统和图形程序员就职于游戏行业的 Blizzard、Ensemble 和 Petroglyph 等公司。。。。。。Colt 讨论息争决了目今移动 Web 开发者们感应最棘手问题之一:JavaScript 的性能。。。。。。由于 JavaScript 剖析引擎使用 GC (垃圾接纳机制)治理内存,,,,,以是基于 Web 的 JavaScript 应用程序可能会遭遇性能问题,,,,,尤其是在移动客户端上。。。。。。McAnlis 告诉 Web 开发者听众: “你们不应该依赖垃圾接纳器。。。。。。”
GC 通过自动将程序不再需要的内存返回到操作系统来资助程序员。。。。。。不过用C和 C++ 等初级别的语言编写代码来治理内存是一个艰辛的历程,,,,,并且不管怎样,,,,,这样的语言不被浏览器所原生支持。。。。。。
许多 JavaScript Web 应用保存的问题是,,,,,JavaScript 引擎会在看似随机的时间执行其垃圾接纳的例行使命,,,,,这样会使得应用程序暂时变慢。。。。。。例如,,,,,视频应用的帧频可能会降低,,,,,或者应用程序执行操作的时间可能会从标准的 3 至 5 毫秒跳跃到可引起人注重的 20 毫秒。。。。。。
McAnlis 引用了一个研究结论说,,,,,总体而言,,,,,若要让 GC 在不被用户察觉的情形下事情,,,,,系统内存至少需要六倍于现在的装备所使用的内存。。。。。。而思量到移动装备有限的内存与其运行的需要大宗内存的应用程序的数目,,,,,这会是一个苛刻的要求。。。。。。
闭包是一种扩大外地界说变量可用性的程序员友好型手艺,,,,,其使用的增添加剧了这一问题。。。。。。例如,,,,,jQuery 是一种被普遍使用的依赖闭包的 JavaScript 库,,,,,其效果是在内存分派中造成大宗的铺张。。。。。。
当提及闭包在其所消耗的内存的量方面是何等的不可展望时,,,,,McAnlis 说:“闭包所引起的问题吓到我了。。。。。。”他建议,,,,,为了提高性能并更好地治理内存,,,,,开发职员应该使用一种类似于中心件库 Emscripten 所使用的要领,,,,,这种要领正被用于构建高性能的 HTML5 Web 游戏。。。。。。
Emscripten 把用C和 C++ 编写的代码转换成 JavaScript, 使其可以从应用程序自身内部治理内存。。。。。。;;;; Emscripten 的程序会预先从系统中分派出一块内存。。。。。。程序员连同 Emscripten 一起决议何时不再需要内存,,,,,并把这部分未使用的内存送还到其内部的可用内存中。。。。。。JavaScript 引擎差池程序做任何垃圾接纳事情,,,,,以是不会影响程序的性能。。。。。。
McAnlis 说,,,,,一样平常而言,,,,,使用这项手艺编写的程序可比典范的 JavaScript 程序的运行速率高两至四倍,,,,,并免于遭受由于 GC 的操作而带来的无意性能滞后。。。。。。
Steve Soulders 认真 Google 公司的 Web 性能和开源组织。。。。。。他是 Firebug 性能剖析扩展工具——YSlow 的创造者,,,,,也是O'ReillyWeb 性能与运作聚会 Velocity 的团结主席。。。。。。他一经在 Yahoo!担当 Chief Performance。。。。。。Steve 在另一个讲座中,,,,,提到了部分新兴浏览器手艺,,,,,这些新兴手艺的作用在于页面被用户请求之前的预获取。。。。。。Soulders 诠释道,,,,,这个想法就是,,,,,浏览器应该能够在用户请求页面之前便预见到其可能想看的下一页。。。。。。“你不知道用户的下一步会是什么,,,,,可是你能从他/她在刚刚请求的页面上的意图找到更多的线索”,,,,,Soulders 说。。。。。。然后他诠释了开发使用这一知识的几种手艺。。。。。。
开发职员可以向一个页面的超链接添加 HTML dns-pre-fetch, pre-fetch 和 pre-render 标签。。。。。。一旦一个页面被加载,,,,,此类标签可以在用户请求之前,,,,,下令浏览器去获取在这个原始页面中被链接的页面的部分内容。。。。。。dns-pre-fetch 标记告诉浏览器查找 Web 页面链接所指向的页面的域名,,,,,pre-fetch 标签告诉浏览器抓取整个页面,,,,,pre-render 告诉浏览器构建整个页面,,,,,就似乎浏览器正在一个隐藏的选项卡上显示这个页面。。。。。。当被安排时,,,,,所有这三个种标签可以缩短请求 Web 页面和显示谁人页面的时间距离。。。。。。
Soulders 忠言开发者要明智地使用这些标签,,,,,由于它们会增添带宽和处置惩罚器的使用率。。。。。。但在许多情形下,,,,,例如在一个上岸或者显示搜索效果的页面上,,,,,有相当高的可能性,,,,,用户将点击其于页面上发明并已经被交付的链接之一。。。。。。差别的浏览器关于这些标签的支持各不相同,,,,,但大大都浏览器制造商似乎在向其即将到来的新版本添加对它们的支持。。。。。。
浏览器自己也有一些加速网页交付速率的要领,,,,,如 DNS 预剖析和 TCP 预毗连。。。。。。使用 DNS 预剖析,,,,,通过视察用户在导航栏中最先键入的字母是什么,,,,,或者甚至通过例行获取用户最常会见的 Web 网站的 IP 地点等操作,,,,,浏览器可以预见到下一个将被会见的站点的域名。。。。。。TCP 预毗连通过类似的手段预见用户的下一步行动。。。。。。Soulders 说,,,,,它通过打起源口并针对一个最终请求设置所有协议,,,,,来“预热”与站点的毗连。。。。。。
提起网站优化,,,,,许多前端开发者会连忙想到 Yahoo 的网站优化准则,,,,,随着研究和手艺的一直生长,,,,,规则也从最初的 14 条增添到了现在的 34 条,,,,,可是最焦点的一些基来源则依然被网站开发者作为圣谕,,,,,包括:
镌汰 HTTP 请求
使用 CDN 手艺
设置 HTTP 文件头逾期缓和存控制字段
启用 Gzip 压缩
只管把样式表放在页面顶部
只管把 Javascript 代码放在页面底部
阻止 CSS 表达式
将 Javascript 和 CSS 外链
镌汰 DNS 查找
阻止重定向
删除重复剧本
设置 Etags
缓存 Ajax
……
上一篇:原创文章对SEO的主要性
24小时免费服务咨询热线:400-080-3010
连忙咨询
联系STAKE中国官方网站






连忙咨询
联系STAKE中国官方网站