摘要: Yahoo!网站性能最佳体验的34条黄金守则英文地址http://developer.yahoo.com/performance/rules.html 中文地址 http://www.dudo.org/article.asp?id=214 内容篇 http://www.dudo.org/article.asp?id=215 服务器篇 http://www.dudo.org/article.asp?...阅读全文
posted @ 2009-04-24 10:26 YSLOW 中文介绍 阅读(2088) 评论(0) 编辑

官网会议视频和幻灯片资料 http://velocity.oreilly.com.cn/2011/index.php?func=slidesvideos

 

 

高性能移动互联网
演讲幻灯片:高性能移动互联网[PDF]

来自Google、Yahoo、Microsoft、Netflex等公司的案例分析印证了高性能网站能够增加流量,提高用户体验,增加业务收入,并且降低运营成本。在桌面上我们有最好的实践经验、工具、Web Service 来提高网站性能,当移动互联网来到的时候我们有什么?Steve Souders的讲话将给出移动互联网性能分析、创造更快速的移动互联网体验的最近进展。


 

低功耗服务器定制与绿色计算
章文嵩(淘宝)

低功耗服务器适合于数据密集型的应用,降低服务器功耗是建设绿色数据中心的一个重要环节。


本讲座会分享以下内容:

  1. 淘宝底层架构团队对低功耗的认识,和淘宝低功耗服务器项目的发展过程;
  2. 介绍淘宝CDN系统的全貌、访问负载的特点,讲解如何应用低功耗服务器在绿色CDN中,以及其中的优化关键点;
  3. 对比其他类型CDN服务器方案,描述低功耗解决方案在淘宝CDN的应用情况。分享低功耗节点在淘宝商城双11大促活动中的表现;
  4. 介绍低功耗服务器的开源和GreenCompute.org项目;
  5. 总结低功耗服务器的特点、未来发展、拓展绿色CDN以外可能的应用。

 

快速的移动互联网网站与商业KPI的关系:来自一线的案例分析
Joshua Bixby(Strangeloop Networks)

如果你正在寻找移动互联网性能方面的有说服力的数据,那本议题是你不可或缺的。


移动互联网用户并不满意。85%的用户希望在移动设备上下载速度至少能和在家里的计算机上一样快。几乎半数用户认为太差的性能会让他们不想再来这些网站了。三分之一的用户下次就会转投竞争对手的网站。姑且不说用户的高期望值,移动商务网站在性能上持续不给力,平均网站载入要9秒多。


尽管快速移动网站有它技术上的限制,一些公司已经初露锋芒。但是真正重要的数据还很难拿到。为了填补这一空白 Joshua 潜心研究 Strangeloop 的客户数据,揭示移动电子商务网站性能提升与商业 KPI 的关系。


在议题中 Joshua 会通过详细的案例分析给出最新数据,展示现实世界的公司如何优化移动网站性能,以及由此带来的商业 KPI 戏剧性的提升:

  • PV
  • 转换率
  • 客户购买规模
  • 收入

听众一定会带着清晰明确的答案而去,了解速度对于移动互联网产业是一个多么关键的因素。


 

移动互联网应用的性能优化
David Wei(Facebook)

随着移动互联网产品的爆炸性增长,移动应用在互联网公司的地位日益上升。移动互联网在用户体验、系统硬件和应用软件上都与传统互联网有很大的差异,给应用开发者带来了挑战和机遇。


我准备在以下几方面与大家分享我们在移动互联网的性能优化方面的经验和教训:

  • 移动互联网的技术特点:从应用开发者的角度,哪些特点需要我们注意;
  • 移动应用的性能:测量和优化移动互联网产品的一些方法和工具;
  • 新技术的应用:HTML5为移动互联网产品带来的机遇和挑战。

 

Hulu播放技术的性能改进
金鑫(Hulu)
演讲幻灯片:Hulu播放技术的性能改进[PDF]
  • 新技术对播放性能的改进:自适应码率切换,改进的视频编码技术, GPU硬件加速,多CDN
  • 播放器架构对性能的改进
  • 优化细节以改善性能
  • 播放器的自动化测试和性能监控系统

 

MySQL 5.5 Innodb/Xtradb性能优化与诊断
季海东(Percona)
其他资源:demoScript.sql.zip[ZIP]

Innodb/Xtradb 是互联网上最流行数据库MySQL的最流行的数据库储存引擎。能正确理解其状态是提升互联网后端运营表现的一个重要组成部分。我会和大家分享和交流 Innodb运营状态分析。另外,我也会交流Percona的开源软件的新性能、开发流程和经验以及参与方式。

  • Innodb 状态;
  • 重要参数介绍和分析;
  • 开源Percona Xtradb的新性能,开发测试流程和参与

 

互联网创业服务器运维工具集 —— 米聊服务器端开源工具选择实践
陈臻(小米)

移动互联网创业公司从零开始,如何以一敌十使用开源项目?从日常开发、代码框架、静态检测、持续构建、监控报警,错综复杂的服务端开源选择,看小米科技米聊如何选择?中间又遇到了什么坑?如何正确解决?


 

基于应用场景的NoSQL选型与实践
李刚(奇艺)

本次分享主要内容包括了NoSQL存储介绍,基于应用场景分析的存储选型,NoSQL存储优化和运维方案,基于NoSQL存储的二次开发等内容。


通过应用案例分析,主要对 MongoDB 和 Redis 的特点及适用场景进行了分析,对存储选型中的功能分析,性能测试,容量规划,风险评估过程进行了实例介绍。对使用过程中遇到的问题及解决过程进行了描述,以及针对不同应用需求,对NoSQL产品进行的二次开发,还有对同一种NoSQL,针对不同的应用特点,进行不同方式运维及优化等方面的实践经验。


 

Node.js NAE (APP Engine)
廖恺(淘宝)
演讲幻灯片:Node.js NAE (APP Engine)[PDF]

Node.JS是最近关注度比较高的服务端开发框架,具有并发性能高,开发简便的特点。


app engine也是最近比较流行的应用托管方式,很大程度降低了web应用的托管门槛。


cnodejs社区最近将这两种技术结合,发布了Node App Engine项目,实现了基于Node.JS的 app engine。


本主题主要介绍了nodejs的特点与发展,以及nae的功能特点与设计思路变迁。


 

面向浏览器的推送优化之路
张乐伟(淘宝)

本主题主要涉及构建大规模消息推送系统过程中所面临的问题及相关的可选方案,包括http长连接的选型,http server的选择,前端多页面多域名的解决,负载均衡的选择,大量连接的管理,消息路由,网络调整,内核参数调优,JVM的相关调优等一系列方案的选择比较,并在此基础上分析淘宝web旺旺等应用在面向浏览器消息推送上的相关实践。


 

打造安全、易运维的高性能Web平台:淘宝网Nginx定制开发实战
朱照远(淘宝), 王晓哲(淘宝)

淘宝网是全亚洲最大的电子商务网站,每天数十亿的PV对前端Web服务器的性能提出了非常严苛的要求。如何做到Web服务器的高性能,同时保持其安全性与可运维性?在此演讲里,我们将和你分享淘宝网是怎么通过定制开发Nginx服务器内核以及开发有效的模块来达到这点的。

在演讲里面我们将涉及以下等内容:

  • 针对前端的优化,比如组合CSS和JavaScript文件、gzip优化
  • 针对安全的增强,比如如何防御应用层的DDoS攻击,如何做流控
  • 针对运维,做了哪些功能增强,如日志的syslog和管道支持等
  • 单机支持几十万连接的comet服务器
  • 如何在Web服务器中集成Lua语言,打造非阻塞I/O的高性能动态脚本引擎
  • 如何在Web服务器中更方便、高效的访问数据库

 

使用BigPipe提升浏览速度 —— 流水线技术在新浪微博的实践
吴侃(新浪)

从web1.0时代至今,我们一直在尝试各种方法,提高用户对于互联网产品浏览速度。在Web应用多样化,复杂化的今天,新浪微博团队向 FaceBook 等前辈学习和借鉴,尝试改变对于现有资源的使用,来达到提升用户浏览速度的目的。


 

数字里都有些什么?
演讲幻灯片:数字里都有些什么?[PDF]

Theo 将会讨论应用和系统性能测量以及为什么几乎所有人都会做错。处理问题正确的做法并不难,但是人们往往会采取完全错误的方法。所以我们会研究一些数字,理解为什么这些数据会误导大家,然后讨论解决问题的正确方法。既然人们不能总是采用正确的做法做事情,那我就谈谈“错误”做法的价值所在吧。


 

Web + Apps,融合之路
周志超(腾讯科技)
演讲幻灯片:Web + Apps,融合之路[PDF]

在开放平台和应用市场越来越流行的今天,Web 的发展如何与日新月异的互联网市场匹配?在 Q+ 开放平台的构建过程中,我们反复思考这个问题并积累了大量的经验,此次将会和大家分享的经验有:

  1. WebQQ 的客户端化实践
  2. 如何在 QQ 上实施客户端和 Web 结合的开发模式
  3. Web 编程模式的 App 化
  4. QQ 上的 Web 应用的性能优化
  5. HTML5、CSS3 等新兴 Web 技术在 Q+ 开放平台的应用

 

如何利用下一代的MissionCritical MySQL来大幅度提升系统的可用性和性能并降低总体成本
Dr. John Busch(Schooner)

约翰.布什博士作为Schooner信息科技的创立者,将要和我们讨论下一代MissionCritical MySQL的构架,益处和在业界的部署。MissionCritical MySQL完全消除了数据不一致,支持自动的故障切换,拥有低的响应时间,并提供读写的无限扩展能力和跨数据中心的高可用性和高性能。基于现代标准服务器,存储器和网络而设计的MissionCritical MySQL可以大幅度的降低数据中心的人力和电力消耗,并降低总体运营成本50%以上。对比采用传统的MySQL或者基于中间层的数据分片和复制方式,基于MissionCritical MySQL的开发可以提供更高的可用性,更高的数据完整性,更好的性能和扩展性,和方便友好的管理。除此之外约翰.布 什博士也会讨论包括电子商务,社会媒体,电信和金融服务等方面的大容量网站的部署。


 

新一代Facebook移动平台
David Wei(Facebook)
演讲幻灯片:新一代Facebook移动平台[PDF]

Facebook在2011年10月份发布了新一代移动平台,这为全球的移动应用开发者带来了新的市场机遇和挑战。在这个主题里,我准备在以下三个方面与大家分享我的见解:

  • 新平台的接口和功能;
  • 平台上移动应用的研发流程;
  • 平台为移动应用提供的传播支持。

 

由外到内的用户体验监测
陈靖华(基调网络公司)
演讲幻灯片:由外到内的用户体验监测[PDF]

基调网络多年来始终致力于网站及应用性能监测的研究,积累了丰富的用户体验分析及优化经验。在这里,我们将同大家一起分享以下内容:

  1. 网站及流媒体的用户体验监测
  2. 移动互联网体验监测
  3. 数据中心内部的用户感知监测

 

运维生涯
演讲幻灯片:运维生涯[PDF]

该主题演讲将是一次关于 Web 运维“职业”发展的无厘头旋风之旅。


 

http://velocity.oreilly.com.cn/2011/index.php?func=session&name=%E5%A4%A7%E5%9E%8B%E7%BD%91%E7%AB%99%E6%80%A7%E8%83%BD%E7%9B%91%E6%8E%A7%E3%80%81%E6%B5%8B%E9%87%8F%E5%92%8C%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4%40%E9%9B%85%E8%99%8E
Betty Tso(Yahoo!, Inc.)

每个月雅虎都承载着超过7亿独立用户和超过1200亿PV的浏览量。雅虎团队一直在努力创造更出色的用户体验 —— 更快速地提供页面内容,每一字节每一毫秒都锱铢必较。请大家一起来了解我们如何在全世界范围内监测终端用户可感知性能,找到性能瓶颈。我们还会演示下一代 YSlow (页面性能分析工具,280多万次下载,35万用户)诸多很酷的功能。


 

Hadoop, Hive和Scribe在运维方面的应用
邵铮(Facebook)

在云计算和大机群越来越普及的今天,运维的工作越来越多的转化为大规模数据分析的工作。在本议程中,我们会先介绍Hadoop, Hive和Scribe系统所解决的问题,以及这些系统本身在运维方面的挑战;然后我们会介绍如何利用这些系统来解决其自身在运维方面的挑战;最后我们会介绍如何利用这些系统来满足其他系统在监测和运维方面的需求。


 

大规模集群控制系统与自动运维
臧志(百度)

在百度数量庞大的服务器上运行着大量类型各异的服务。这些服务存在着各式各样的运维需求,给运维自动化带来了技术、效率、成本和安全方面的巨大挑战。因此,我们需要一个通用的集群控制系统作为基础来统一管理和完成各类运维需求。本次演讲将主要分享百度正在使用的集群控制系统的设计与实现,并将介绍以此为基础构建出的各类运维平台,以及百度推进运维自动化的规划。


 

支持迭代计算的MapReduce框架
刘洪清(豆瓣)

MapReduce 类框架在大规模数据计算上有很好的伸缩性,但在实现需要迭代类算法时效率比较低。UC Berkeley 的 AMP 实验室设计并实现了 Spark 来解决迭代计算问题,是用 Scala 实现的,建立在通用的计算资源调度框架 Mesos 之上。Dpark 是 Spark 的 Python 克隆,实现了 Spark 的绝大部分特性,使得可以直接用 Python 进行 MapReduce或者迭代式计算,Spark 的优雅设计使得它非常灵活,并具有跟高的扩展能力和性能。豆瓣正在积极尝试用它来取代Hadoop和部分MPI 来实现日志分析和各种数值计算,会分享一下这方面的心得体会。


 

高性能 HTML5
演讲幻灯片:高性能 HTML5[PDF]

很多年来我们构建的 Web 应用都让浏览器不堪重负。随着 HTML5 带来的诸多特性(包括 video and audio, canvas, SVG, app cache, localStorage, @font-face,等等)浏览器正在迎头赶上,希望能领先开发者采用这些新技术带来的 Web 应用大潮。


你的 HTML5 应用将会傲立潮头还是被用户抛弃在岩石上?让我们一起研究 HTML5 的新功能来构建快速的 Web 应用吧。


 

机票实时搜索引擎的优化
林浩(去哪儿网), 刘连春(去哪儿网)
演讲幻灯片:机票实时搜索引擎的优化[PDF]

去哪儿网(Qunar.com)机票搜索是目前最大的中文机票搜索网站,每天为用户提供数以百万计的实时机票搜索服务,后端组件每天承载2亿多次动态查询请求。机票的价格变化很快,几分钟内价格就可能会发生变动,在高访问量的压力下,我们需要快速抓取到准确的报价,这需要对系统各个组件的性能问题特别重视。我们不断调整构架、优化流程、加快数据解析速度、减少内存占用、降低带宽消耗,在这个过程中积累了大量性能优化的实战经验。本演讲将与大家分享这些成长的故事。


 

腾讯云存储
刘永升(腾讯)
演讲幻灯片:腾讯云存储[PDF]

云存储是腾讯提供的一种专业的存储解决方案,使第三方专注于业务特性的开发,不必关心数据存储细节,从而降低开发门槛,提升开发效率。在这里,我们将为您讲述云存储的“蜕变”历程,揭开云存储支撑海量存储、海量访问的秘密...


 

海量数据的高效存储 —— 淘宝云梯极限存储的原理和实践
王勇(淘宝)

极限存储是数据仓库应用与分布式计算的经典结合,在云梯集群(based hadoop)上实现了数据高达100倍的压缩比,迄今为止已有30余种业务数据完成应用,累积节省存储超过15PB。同时,该技术提供了快速访问历史上任意一天快照的能力,对于一段时间周期的数据访问能够显著降低其计算成本,缩短计算时间。


 

基于 SeaJS 的高性能网站开发和优化实践
王保平(淘宝)

SeaJS 是专注于浏览器端的模块加载器,并致力于打造 JavaScript 生态圈。使用 SeaJS,你可以得到:

  1. 异步并行加载脚本、自动管理模块依赖。
  2. 简单一致的模块书写规范、永不冲突的命名空间。
  3. 愉悦的调试体验、便捷的打包部署工具。

目前 SeaJS 已应用于淘宝商品详情页、一淘直通车、聚划算等重要系统中,在腾讯、百度、盛大、网易等站点也皆有应用。


这次分享将聚焦于 SeaJS 的核心设计,以及在淘宝网的优化实践,特别是在淘宝商品详情页的优化实践。


 

Node.js 性能案例分析
Fabian Frank(Yahoo!, Inc.)
演讲幻灯片:Node.js 性能案例分析[PDF]
  • 真实案例分析,对比 Node.js 与 PHP 服务端性能。
  • 一个实用的、可操作的 Node.js 性能和可伸缩性分析,用户可以据此来评估你的应用是否可以采用 Node.js 来运行。
  • 展示 Mojito(Yahoo 的 Node.js MVC 框架) 数据,运行 Web 应用性能良好。
  • 产品演示: Yahoo! Search Direct (2011年11月份发布),Mojito(计划2012年12月份开源)。

 

posted @ 2011-12-15 10:36 YSLOW 中文介绍 阅读(39) 评论(0) 编辑

O'Reilly 一直致力于帮助大家构建更出色的互联网。由 O'Reilly 和淘宝网合办的 O'Reilly Velocity China 2010 即是出于这样目标的会议,今年的主题是“与生俱来地快”。

 

官网提供讲话幻灯片的PDF版本,请大家关注会议视频和幻灯片资料

 

其中包括

 

Facebook网站的Ajax化、缓存和流水线

在这个报告中,我将介绍在Facebook网站前端性能优化中采用的最主要的一些技术。这些技术不光降低了服务器的开销,而且同时极大地提高了Facebook网站的用户体验性能。

  • 我将首先介绍Quickling技术。通过Quickling,Facebook将所有的用户点击访问自动地转变成AJAX调用,避免了大量的服务器端重复计算和客户端的重复渲染。
  • 然后我将介绍基于Quickling的PageCache技术,通过JavaScript自动缓存用户访问过的页面,极大的加速Facebook主页的性能并降低服务器开销。
  • 最后,我将介绍BigPipe技术,通过采用微处理器内的流水线技术,将Facebook网站用户感知性能加速一倍以上。

 

更好地使用JavaScript
演讲幻灯片:更好地使用JavaScript[PDF]

使用 JavaScript 成功的关键在于认识到这一语言存在能够支持高质量程序开发的子集,要使用这一子集的最大优势。本次讲话将探讨如何做出权衡,它将会影响网站可维护性和网站性能。

淘宝云梯分布式计算平台整体架构

异构环境的智能调度系统──天网调度系统(智能化,自动化,集成化,集调度,运维,监控,分析与一体),大幅提升运维效率和系统运行的效能。

Hadoop 云梯分布式计算平台(自动部署,统一gateway,自动适应任务分发),管理100台和管理10台的运维成本能好的控制,如何提升海量异构job的综合运行性能,提升整个集群的运行效率和资源使用率。

集成元数据,自动化分析系统瓶颈,自动化定位系统关键路径,轻松应对如何运维10w以上的job的自动化定位核心问题点。

构建高性能的MySQL系统
演讲幻灯片:构建高性能的MySQL系统[PDF]
  • 首先介绍优化中的三个W一个H:为什么要优化数据库?谁来优化?优化什么?怎么优化?
  • 在数据库设计中怎么设计出高性能的表结构以及选择合适的存储引擎;
  • 如何设计出高效的索引和书写出高性能的查询语句;
  • 通过使用合适的硬件以及调节MySQL服务的参数来达到服务的高性能;
  • 在跨IDC的多点写入下如何从MySQL的部署架构上来满足数据量和查询量日益暴增的业务需求。
百姓网的网速优化之路
演讲幻灯片:百姓网的网速优化之路[PDF]

Yslow,PageSpeed,CDN加速,双线机房,BGP, 第三方监控,页面缓存......如果你们有几百人的团队,相信所有东西都会被仔细研究,可如果你的人手和资源有限又真的很想提高网站访问速度,怎么办?在过去三年里,我们仅有十人的技术团队在不断地监控和优化网站访问速度上做了很多的尝试,这里和大家分享下我们的些许心得。

YouTube的前端性能改进:逐步增强与超越

过去的一年我们针对YouTube Watch页面做了很多前端性能改善工作,使用的技术包括逐步增强、基于行为的widget系统、预装载连接。我将讨论在YouTube我们如何使用这些技术以及您如何在自己的网站中使用他们。

第三方广告代码稳定性和性能优化

网页中常常会引入的广告,流量统计等等第三方JavaScript代码。问题是这些代码不仅会拖慢页面速度而且还会对合作网站的稳定性造成影响。分享淘宝广告系统最近的一些工作成果关于如下这些话题:有哪些无阻塞脚本加载方案可供选择,采用这些方案还能保证广告展现的速度么?在合作方不改变已有埋点时,如何实现Fast By Default,如何为无时间戳的脚本做好版本控制?如何在严格控制代码总大小的前提下有效组织JavaScript代码?网站开发如何降低第三方代码对网站速度和稳定性的影响?

静态网页资源的管理和优化

静态网页资源包括Javascript、CSS和图标图片,它们是现代网站不可缺少的部分。而这部分的性能又直接影响了网页的速度。在这个讲座里,我将与大家分享我们在静态网页资源的管理和优化上的经验。Facebook的五亿活跃用户来自五湖四海:不同文化、不同的语言、不同的网络链接质量。巨大的用户差异性给我们的静态网页资源管理提出了很多新的挑战。这个讲座将围绕这些挑战讨论:

  1. 系统架构:为全公司开发团队的提供简易透明的固态网页资源编程接口;
  2. 系统扩展性:研发一个可扩展的固态资源管理,以满足不断增长的网站功能、不断增加的用户语言和不断变化的个性化策略
  3. 自适应性:为固态资源管理研发自适应的优化模块,让系统随功能的增减和用户使用方式的变化自动调节,几乎不需要人力干预。
卷土重来:服务器端JavaScript

事件驱动、基于回合的处理模式让我们在浏览器端受益匪浅,现在有扩展到服务器端,同样会带来可观的新效率。

Facebook: 一个可持续发展的高性能网站

提高一个网站的性能很难,以一个很小的团队让一个大规模网站一直保持高性能更难。在这个讲座里,我将与大家分享Facebook在保持网站高性能这个问题上的经验和教训,并着重在以下三个方面深入讨论:

  1. 重视架构:如何让团队里的性能优化高手找到最高价值的优化目标
  2. 数据说话:如何测量最终用户体验,并且把测量数据与全公司开发团队分享
  3. 分担责任:如何与产品开发团队合作,共同提高网站的性能
posted @ 2010-12-09 13:09 YSLOW 中文介绍 阅读(291) 评论(0) 编辑

英文原文地址【翻译:基调网络性能分析工程师zhenzh

DynaTrace 致力于分析后台应用性能的表现已经好几年了,最近,他们通过发布dynaTrace Ajax Edition进入了前端性能分析领域. 它是一个运行在IE下的BHO免费工具. 虽然我喜欢Firefox和它下面的所有插件,但我知道基于IE的测试和调试也是很重要的。

一旦您下载 并安装了DAE (dynaTrace Ajax Edition), 您必须进入开始菜单里面的程序组,找到dynaTrace。很明显,首先要做的是录入一个url链接,接下来,点击播放图标的按钮,选择“New Run Configuration”,录入一个新的URL.

DAE的特点之一是它可以运行在多页面的工作流之下,你可以输入起始网址,然后导航到其他网页或启动Ajax特性,而DAE在后台监视一切。当您关闭IE浏览器时,您就可以分析所有DAE收集的信息了.

DAE区别于其它工具的主要特征: 深入分析JavaScript。通过检测事件触发和JavaScript API调用,时间线被分割成不同部分。它包含了HTTP瀑布图。另一个特征是可以保存DAE分析结果,这样你可以事后检查并且和同事分享它。它还有一些其它很有趣的特征,例如,自动将精简后的源码格式化,这样你可以在现场调试精简代码时,查看更易懂的版本,你还可以分析CPU占用和页面渲染性能

当需要分析JavaScript引起的性能问题时,dynaTrace Ajax Edition 包含了从高级调用到实际执行的代码详细信息,你可以查看到底是哪一行JavaScript代码导致了页面的性能瓶颈。我建议你测试一下这个工具并将它添加到你的性能测试工具包之中.

 

【注:原文部分文字被省略,棕色字体为译者增加

posted @ 2010-04-12 12:03 YSLOW 中文介绍 阅读(395) 评论(2) 编辑

英文原文地址【翻译:基调网络性能分析工程师zhenzh

Ajax 缓存: 两个重要的事实文章中, 作者指出:

在IE中,即使你按强制刷新(Ctrl+F5),在内容过期之前,Ajax也不会更新。确保更新的唯一方法是从缓存中删除此记录。

我发现这虽然很难让人相信,但这确是事实。如果碰到刷新键(F5),IE浏览器将重新请求在网页中的除XMLHttpRequest以外所有未过期的资源。在测试期间,这肯定会为开发造成混乱,但我想知道是否还有其他问题。其他主流浏览器的行为是什么?如果内容已经过期或者没有Expires头的行为是什么?增加Cache-Control: max-age 头有什么效果?

因此我创建了这个Ajax 缓存测试页面.

这个测试页面包含了一个图片,一个外部脚本文件和一个XMLHttpRequest。过期日期取决于我们选择的链接。

  • Expires in the Past 包含了一个已过期30天的Expires 响应头, 一个Cache-Control: max-age=0 响应头
  • no Expires没有返回任何Expires 或 Cache-Control 响应头
  • Expires in the Future 包含一个在未来30天才过期的Expires 响应头, 一个Cache-Control :max-age=2592000 响应头.

测试很简单: 点击一下链接 (比如, Expires in the Past), 等待页面加载完毕,然后按F5。表1展示了在主流浏览器下的测试结果。结果记录了Ajax请求是否重新请求还是从缓存读取,如果重新请求HTTP状态码是什么。

表1 当Ajax被缓存,按F5的结果
Past Expires No Expires Future Expires
Chrome 2 304 304 304
Firefox 3.5 304 304 304
IE 7 304 cache cache
IE 8 304 cache cache
Opera 10 304 cache 304
Safari 4 200 200 200

下面是我对按F5键的总结:

  • 所有浏览器均重新请求图片和脚本。(这样做是有道理的)
  • 所有浏览器均重新请求ajax,如果已经过期。 (这样做是有道理的 - 浏览器已经知道了缓存的Ajax已经失效)
  • 唯一不同的行为是当Ajax没有设置Expires缓存头或缓存未到期时. 即使按Ctrl+F5,IE 7和8 均重新请求Ajax,不管没有Expires头或没有过期。 当没有Expires头时,Opera 10 重新请求Ajax 。(我没有找到在Opera下强制刷新的功能)
  • 所有情况下,Opera 10 和 Safari 4 重新请求favicon.ico(浪费)
  • 所有情况下,Safari 4 均没有发送If-Modified-Since头,导致产生HTTP 200状态码,对于图片和脚本也是一样(这是浪费并且背离了其它浏览器的行为)

结论

下面是我对页面开发人员和浏览器厂商的建议:

  1. 开发人员需要设置一个已过期或未过期的Expires,避免出现未指定Expires时含混不清和怪异的行为
  2. 如果Ajax不应被缓存,开发人员应该设置一个已过期的过期日期
  3. 如果Ajax应该被缓存,开发人员应该设置一个未过期的过期日期。当在IE 7和8下面测试时,开发人员应该记得测试重新加载(F5)时清空缓存
  4. 当按F5时,IE 应该重新请求Ajax
  5. 当按F5时,Opera 和 Safari 应该不再加载favicon.ico
  6. 当按F5时,Safari应该发送If-Modified-Since头
posted @ 2009-08-28 15:54 YSLOW 中文介绍 阅读(325) 评论(0) 编辑