Web性能优化:prefetch, prerender

标签: web 性能优化 prefetch | 发表时间:2015-10-06 08:00 | 作者:
出处:http://harttle.com

本文从预加载的角度介绍如何优化页面载入和渲染的性能,在展开内容之前先了解一下浏览器显示页面的过程: 首先是DNS解析,然后建立TCP连接,接着下载HTML内容以及资源文件,最后才是整个页面的渲染。如图:

@2x

图片来源: https://docs.google.com/presentation/d/18zlAdKAxnc51y_kj-6sWLmnjl6TLnaru_WH0LJTjP-o/present?slide=id.gc03305a_0106

预加载和缓存是两个概念,缓存通常使用304响应状态码来标识,参考文章: 怎样理解HTTP状态码?

这四个阶段必须是串行的,任何一步的延迟都会最终影响到页面加载时间。但浏览器在这方面已经做了很多优化,例如它会猜测你将要打开的页面,并预先解析DNS甚至直接下载它们。 但浏览器猜测的能力是有限的,作为Web开发者我们可以通过 dns-prefetch, subresource, prefetch, prerender等指令来帮助浏览器优化性能。

dns-prefetch

dns-prefetch可以指示浏览器去预先解析DNS域名。这样可以减少将要打开页面的延迟,

   <head>
  <link rel='dns-prefetch' href='example.com'>
  ...
</head>

对于重定向也是有用的,比如对于:host1.com/resource > 301 > host2.com/resource 也可以设置 dns-prefetch: host2.com 来省去最后一个页面访问的DNS延迟。

prefetch

prefetch用来初始化 对后续导航中资源的获取prefetch指定的资源获取优先级是最低的。

   <head>
  <link rel="prefetch" href="checkout.html">
  ...
</head>

subresource

subresource用来标识出重要的资源, 浏览器会在当前访问页面时立即下载它们

   <head>
  <link rel="subresource" href="critical/app.js">
  ...
</head>

subresource的语义是当前页面的子资源,浏览器会立即下载它们。 subresource的优先级高于 prefetch。 参见: http://stackoverflow.com/questions/29475854/what-is-link-rel-subresource-used-for

prerender

合适的适合,你甚至可以 prerender来让浏览器在后台事先渲染好整个页面,这样它的打开速度将会是0秒!

   <head>
  <link rel="prerender" href="checkout.html">
  ...
</head>

因为要渲染整个页面,所以它需要的所有资源也会被全部下载。 如果里面的JS需要在页面显示时运行,可以通过 页面可见性API来实现。 当然只有GET才是可以预先渲染的,预渲染POST当然是不安全的。

相关 [web 性能优化 prefetch] 推荐:

Web性能优化:prefetch, prerender

- - Harttle Land
本文从预加载的角度介绍如何优化页面载入和渲染的性能,在展开内容之前先了解一下浏览器显示页面的过程: 首先是DNS解析,然后建立TCP连接,接着下载HTML内容以及资源文件,最后才是整个页面的渲染. 图片来源: https://docs.google.com/presentation/d/18zlAdKAxnc51y_kj-6sWLmnjl6TLnaru_WH0LJTjP-o/present?slide=id.gc03305a_0106.

Web性能优化

- - SegmentFault 最新的文章
Web网站的性能细线在几个方面:. 通过分析浏览器的渲染原理、资源对渲染的影响,得出优化网站性能的办法. Chrome的 Timeline面板录制网页加载的过程,分析记录浏览器渲染过程中每个过程的耗时. 关闭Chrome扩展或者启用隐身模式. 根据使用场景,模拟真实的网络加载情况:. 2.2 Timeline工具的各个组成.

web前端性能优化进阶路

- - 阿里巴巴(中国站)用户体验设计部博客
Web前端性能优化WPO,相信大多数前端同学都不会陌生,在各自所负责的站点页面中,也都会或多或少的有过一定的技术实践. 可以说,这个领域并不缺乏成熟技术理论和技术牛人:例如Yahoo的web站点性能优化 黄金法则,以及大名鼎鼎的优化大师 Steve Souders. 本文并非一篇讨论性能优化技术方法的文章,而更多的是对中文站 搜索List页面持续两年多的前端性能优化实践的 思路总结.

Java Web 服务性能优化实践

- - 博客 - 伯乐在线
来源: IBM developerworks. 简介: 本文介绍如何提升 Java Web 服务性能,主要介绍了三种方法:一是采用 Web 服务的异步调用,二是引入 Web 服务批处理模式,三是压缩 SOAP 消息. 重点介绍在编程过程中如何使用异步 Web 服务以及异步调用和同步调用的差异点. 本文还示范了如何在项目中使用以上三种方法,以及各种方法所适合的应用场景.

Web性能优化之图片优化

- - 极客521 | 极客521
HTTP Archieve有个统计,图片内容已经占到了互联网内容总量的62%,也就是说超过一半的流量和时间都用来下载图片. 从性能优化的角度看,图片也绝对是优化的热点和重点之一,Google PageSpeed或者Yahoo的14条性能优化规则无不把图片优化作为重要的优化手段,本文覆盖了Web图片优化的方方面面,从基本的图片格式选择、到尚未被广泛支持的响应式图片均有所提及.

HTTP/2 与 WEB 性能优化(一)

- - JerryQu 的小站
2013 年 11 月份开始,我的博客开始支持了 SPDY 协议( 详见这里),也就是 HTTP/2 的前身. 今年二月份,Google 宣布将在 16 年初放弃对 SPDY 的支持,随后 Google 自家支持 SPDY 协议的服务都切到了 HTTP/2. 今年 5 月 14 日,HTTP/2 以 RFC 7540 正式发布.

HTTP/2 与 WEB 性能优化(二)

- - JerryQu 的小站
在「 HTTP/2 与 WEB 性能优化(一)」这篇博客中,我主要写了 HTTP/2 中的 Server Push 给 WEB 性能优化带来的便利,今天继续来聊一聊 HTTP/2 其他方面的改变. 我们知道,HTTP/2 并没有改动 HTTP/1 的语义部分,例如请求方法、响应状态码、URI 以及头部字段等核心概念依旧存在.

【ActiveMQ Tuning】Prefetch Limit

- - 博客园_首页
   摘要:ActiveMQ优化 客户端优化 预取限制. 原文: http://fusesource.com/docs/broker/5.4/tuning/GenTuning-Consumer-Prefetch.html. Overview:图列4.1阐明了Broker在等待之前发送给客户端消息的反馈的行为.

memory prefetch浅析

- - 搜索技术博客-淘宝
最近在用vtune分析程序性能瓶颈时,发现一些内存访问的地方竟然成了cpu热点. 经过仔细分析,发现这些热点主要是对大数组非连续位置的访问的引起的. 比较消耗cpu的原因应该是cache不命中. 因为像这样局部性很差的内存访问逻辑,对cache是很不友好的. 于是想到了prefetch……. x86(以及其他很多体系结构)的CPU提供了prefetch系列指令,用于将指定地址的内存预取到cache.

Web性能优化:What? Why? How? - 木的树

- - 博客园_首页
Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上.   web性能对于用户体验有及其重要的影响,根据著名的`2-5-8`原则:. 当用户在2秒以内得到响应,会感觉系统的响应非常快. 当用户在2-5秒之内得到响应,会感觉系统的响应速度还可以.