为推动Web技术的发展,Brilliant Open Web 团队特推出每个月一期的《移动Web加速技术月报》,该月报将整理较流行的移动Web加速技术,并跟进各项技术的进展和发展方向,以期帮助开发者了解或选用相关的技术,把握技术发展趋势。欢迎关注【OpenWeb开发者】公众号并回复“加群”,一块儿探讨相关技术。web
做者 | Brilliant Open Web 团队breezet、chengang、shdong 编辑 | 尾尾chrome
在上一期的月报中,咱们为你们介绍了Web页面中如何使用预取和预渲染来进行页面加速,同时也指出了目前浏览器提供的预取和预渲染方法所存在的问题以及改进优化的思路。浏览器
本期,咱们将再次聚焦到一期讨论的浏览器缓存、页面云端缓存等技术上,详细展开讨论各类页面缓存技术能达到的效果以及所存在的一些问题。缓存
近几年,不管是内容分发平台仍是浏览器厂商都会经过云端的页面CDN Cache服务,为用户访问Web页面提供更快的页面访问。bash
经过更优质的CDN Cache,内容分发平台或浏览器厂商经过中间代理的方式,让用户享受了更优质的页面速度浏览体验。因为各公司提供的页面缓存服务在对缓存的处理策略上不尽相同,也致使站点在提供Web服务时,不清楚应该如何配置才能被正确缓存而且对本身业务无其余负面影响。服务器
本章节会详细讲述其中存在的问题,综合百度在此方面的处理方案给出建议的通用标准实现。网络
内容分发平台或浏览器对Web页面进行服务端的缓存,主要的目的是由于不少的站点服务自己并无提供较好的网络环境和服务快速响应,经过将此类站点的页面缓存在CDN Cache等网络中(页面代理缓存),能够是用户访问此类站点时享受到极快的页面加载。dom
可是,目前云端缓存的规范是不明确,具体表现为业界已经默认的规范不属于任何组织(如x-forward-for),部分规范是浏览器提供商(chrome,Firefox)等提出的,并未彻底推动到标准中(如标识预加载的x-moz),从而致使页面开发者在本身的页面可能被缓存的状况下,没法正确的保障本身被缓存页面的用户体验以及功能。异步
本文将从如下几个方面在总结内容分发平台或浏览器在代理缓存服务策略上的问题和解决方案:ide
本小节主要讲述页面站点在被浏览器或内容分发平台的代理服务缓存时所面临的问题,并给出对开发者更友好的缓存服务解决方案建议。
下图是一个用户访问站点时的请求所通过的缓存相关的路径。
浏览器部分云加速服务,对页面的修改以及缓存对开发者过于透明不可控,包括可是不限于:
代理缓存服务自己会在页面访问时抓取对应的页面,所以可遵循如下缓存策略:
Cache-Control
来控制;Cache-Control
头来控制缓存超时,用stale-while-revalidate
头来控制平滑更新;百度搜索结果页中的一个网站开发者,本身站点的/home/news/data
路径下的全部页面都是高时效性的页面,不但愿被任何加速服务缓存。为了达到这个目的,站长应该在本身站点的robots.txt
文件中加入以下内容:
Cache:*
HttpsCacheDisallow:/home/news/data/
HttpCacheDisallow:/home/news/data/
# 对于全部的Cache来讲,https和http的在/home/news/data/路径下的全部内容不容许被缓存
# 若是但愿各层加速能平滑更新,那么能够在Cache-Control头里面写入以下内容:max-age=864000, stale-while-revalidate=1728000
# 代表:在86400s内本地缓存有效。在172800s内返回旧缓存的同时,异步发起更新。当时间超过172800s时,缓存失效,从新抓取。
复制代码
全部遵循了缓存规范的服务解析站点的robots.txt文件后,不缓存/home/news/data
路径下的全部内容。知足了开发者的需求。
固然,做为站长,不能滥用此规范,由于不缓存的页面每每意味着更慢的加载速度。
在这种场景下,处在HttpsCacheDisallow或者HttpCacheDisallow所配置的Path中的页面所返回的Cache-Control等header将会仅仅被用来控制浏览器端的缓存。
相应的,对于浏览器自带的云加速服务器来讲,方便在浏览器上作热门站点的robots.txt文件,来判断那些页面能够直接不经过本身的云加速服务,而是直接访问源站。
代理缓存服务进行页面缓存时,也会给站长带来数据统计上的困扰。本小节试图从数据统计的方面,提供缓存服务在统计上的一些解决方案。
x-forward-for
头来指名真实的用户IP信息<meta x-forwad-for='true' sendTo='domain/path'>
本月报将收录移动Web加速技术的主要进展,欢迎读者一块儿完善,投稿邮箱:openweb@baidu.com。
Mip:
AMP: 一、 amp-story 默认静音,添加渐变效果,修复部分兼容性问题,提高组件使用体验 二、 AdSense / Doubleclick 快速取回 unlayoutCallback 实验 三、AMP 元素增长API,实现元素的调度时间传递给元素自己 四、 amp-analytics 增长新的分析服务商:Alexa Internet,增长参数this.isInabox_,支持基本批处理功能
百度在W3C 2017 TPAC会议上针对页面云端缓存策略的议题与全球各大互联网公司有过深刻的交流和讨论,也收到了你们的积极响应和回复。
云端缓存策略是一项重大的技术创新,但技术野蛮生长的同时也对开发者形成了巨大的困扰,随着你们对此项技术的普遍深刻应用,云端缓存策略必然须要统一的标准和规范,开发者经过统一的规范和标准,来配置本身的页面的云端缓存策略,来提供更可靠的体验和功能。
欢迎各位读者补充各项移动Web加速技术及其最新进展,能够发送邮件到 openweb@baidu.com,也能够关注【OpenWeb开发者】公众号并回复“加群”,一块儿来探讨相关技术,与咱们携手推动Web技术的发展!