最近在进行大众点评网的网站前端重构,目前已经完成了部分页面。由原来的DIY JS和jQuery JS改为mootools,页面结构也更加规范,减少css和js文件的引用。

今天是一个比较重要的版本更新,虽然之前很有信心,但是上线后还是使用YSlow评测了下,好消息,重构的页面都是95分+,绝大部分都是99分,A级。(很多人问那一分丢在那里,看这里)

YSlow 是Yahoo开发者团队发布的一款基于Firebug的插件。用于分析网页,并根据一些高性能网站的规则进行相应的评级打分,对于网页性能优化有很好的帮助作用,告诉你那些部分影响了你的网页速度,Why Slow!!

主要规则有13条,其中11条比较关键:

  1. Make fewer HTTP requests--更少的http请求,也就是说页面中尽量少的引用外部静态资源,js、css以及图片
  2. Use a CDN--使用CDN网络,将页面中的静态资源分布到离用户最近的网络节点上
  3. Add an Expires header--为静态资源文件增加过期时间,让用户通过本地缓存来更快的访问网站
  4. Gzip components--压缩静态资源内容,减少网络传输时间
  5. Put CSS at the top--将CSS放在页面头部,能够更快渲染页面
  6. Put JS at the bottom--将JS放在页面底部,一般情况下JS的下载是阻塞模式的,放在页面顶部会阻塞其他资源的下载
  7. Avoid CSS expressions--不要使用CSS表达式,因为CSS表达式需要很多资源,有时甚至会造成页面假死
  8. Make JS and CSS external--将CSS和JS使用外部的独立文件,这点有点和1冲突,但是仔细分析下,并不矛盾
  9. Reduce DNS lookups--减少DNS查找(这点我后面详细解释下)
  10. Minify JS--最小化压缩JS,和第4点不同,使用YUI Compressor或者JSMin将JS文件进行分析,将一些变量名变短,去除不必要的空格和符号
  11. Avoid redirects--避免无意义的跳转
  12. Remove duplicate scripts--去除重复的脚本,不光是文件,甚至是同功能的函数
  13. Configure ETags--配置实体标签(要说清楚这个问题就要引申出很多情况,不做展开了)

我们本身的确是使用了CDN,但是YSlow本身无法分析出是否使用了CDN,所以需要在config中设置一下。这样一来除了第8项,其他都是A级。

再看看Safari的网络时间线,除了这个讨厌的、超大的 Google Analytics脚本,本站的资源下载时间基本在1秒内就完成了。

详细解释下YSlow的第9点,减少DNS查找。

通常情况下按照我们的理解,静态资源文件都是放在本站点目录下的。由于以前大家的网络速度都不快,IE浏览器为了防止大量的http请求阻塞了网络连接,所以同一域名下的http请求,只允许2个并发线程,所以这就导致我们看到有的页面的图片是逐步逐步显示出来的。通过Safari的网络时间线工具就能看出来。

显而易见,为了突破这个限制,我们可以增加几个域名,从而增加并发下载,加快速度。

最好的方式是自己指定每个文件的域名,按照i1、i1、i2、i2、i3、i3、i1、i1的排列方式,但是同时还要考虑引用的文件大小,进行合理的排列,这对于团队开发就过于复杂了。我们使用了i1.dpfile.com、i2.dpfile.com和i3.dpfile.com三个域名,然后在每个调用静态资源文件地方都是用函数调用:DianPing.Common.StaticFile("/s/js/g.mt.min.js"),函数会根据文件进行hash,分配一个域名,这样就能最大化的散列静态文件的域名,虽然有缺点,却是比较平衡的方式。

就在我写文章的同时,Figo仔细分析了YSlow的评分标准,找到我们丢失的一分原因,也是因为第9点。第9点满分是100分,YSlow认为一个页面上最合理的是2个以内域名,每增加一个扣除5分,我们的页面有4个域名(www\i1\i2\i3),扣除了10分。这个占总比例的1/12,所以四舍五入,被扣除了1分。(不过我认为这1分还是值得的,页面加速很明显,而且DNS查找是可以缓存哒~~~)

从Safari的网络时间线工具上看到JS(橙色)的加载会阻塞其他资源的下载,所以我打算再独立一个域名j1.dpfile.com,专门加载JS文件。

不管怎么说,总体来说性能还是提升了不少。

现在静态文件使用的是Squid服务器,接下来等存储设备部署完毕,准备使用Nginx,直接提供服务,听说性能会提高不少。

转载于:https://www.cnblogs.com/muou/archive/2009/05/31/1492650.html

YSlow[转:大众点评]相关推荐

  1. iphone如何信任软件_你还在用大众点评吗?评价软件失去信任还如何活下去

    合并五年之后,大众点评终于在公司名称中消失了.9月11日,美团点评在港交所发布公告称,公司名称拟简化为美团,美团点评也最终成为了历史.有知情人士表示,今年7月美团总部前台大厅的公司名称中就已经没有了点 ...

  2. 看大众点评如何通过实时监控系统CAT打造7*24服务

    为什么80%的码农都做不了架构师?>>>    看大众点评如何通过实时监控系统CAT打造7*24服务 2015-06-08  尤勇  高可用架构 https://github.com ...

  3. 大众点评数据平台架构变迁

    2019独角兽企业重金招聘Python工程师标准>>> 最近和其他公司的同学对数据平台的发展题做了一些沟通,发现各自遇到的问题都类似,架构的变迁也有一定的相似性. 以下从数据& ...

  4. iDoNews 业界报不道:大众点评最有价值的两个东西

    可口可乐总裁曾说过:我们每个人都像,玩着五个球.五个球是你的工作.健康.家庭.朋友.灵魂,这五个球只有一个是用橡胶做的,掉下去会弹起来,那就是工作.另外四个球都是用玻璃做的,掉了,就碎了.人的生命中最 ...

  5. 大众点评字体_点评里的神笔马良!她的美食笔记会让你惊掉下巴!

    在点评刷了太多有趣有料的内容,看过那么多美食照片.高颜值达人,点评君已经很难大惊小怪了,直到--这个探店笔记定格在手机屏幕上! -滑动查看更多- 这么神仙的笔记到底出自谁手呢?当点评君打开达人的主页, ...

  6. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

  7. 解决大众点评换设备无法用卷(你本次购买不符合活动规则)的问题

    解决大众点评换设备无法用卷(你本次购买不符合活动规则)的问题 参考文章: (1)解决大众点评换设备无法用卷(你本次购买不符合活动规则)的问题 (2)https://www.cnblogs.com/it ...

  8. 深度学习核心技术精讲100篇(三十一)-大众点评搜索基于知识图谱的深度学习排序实践

    1. 引言 挑战与思路 搜索是大众点评App上用户进行信息查找的最大入口,是连接用户和信息的重要纽带.而用户搜索的方式和场景非常多样,并且由于对接业务种类多,流量差异大,为大众点评搜索(下文简称点评搜 ...

  9. 大众点评订单分库分表实践之路

    http://dbaplus.cn/news-10-264-1.html 本文是关于大众点评订单分库分表实践的一个具体分享,包含对订单库的具体切分策略,以及我个人的一些思考. 背景 订单单表早已突破两 ...

最新文章

  1. 难解?SAP云平台集成前路何方?
  2. JVM 常用的基本配置有哪些?
  3. 20170728xlVBA改转置一例
  4. Spring之Spring Boot
  5. Servlet 应用程序事件、监听器
  6. pandas 空字符串与na区别_关于python:Pandas用空白/空字符串替换NaN
  7. OpenShift 4 - 基于Memory的HPA
  8. C语言基础学习教程之数据类型
  9. babel-preset-env使用介绍
  10. php美颜滤镜,美颜滤镜的虚幻不如一支玻尿酸来的真实
  11. 广义线性模型和广义加法模型_广义线性模型代码
  12. 计算机键盘上的tab键是什么键,电脑Tab键有什么用处
  13. iphone拍照标注转发微博应用--Gurgle 发布
  14. 中富之命能有多少钱_算命中富 算命的说我是中富命,谁可以帮忙解释下
  15. 常微分方程matlab求解英文文献,常微分方程及其matlab求解毕业论文设计
  16. html五线谱编辑器,​Notation Pad五线谱乐谱编辑器
  17. cannot resolve symbol 问题
  18. MPC5744-LINFlexD
  19. CVPR2017精彩论文解读:结合序列学习和交叉形态卷积的3D生物医学图像分割
  20. 华为ME909 4G LTE模块在树莓派+Ubuntu Mate平台的联网演示

热门文章

  1. iOS学习之NSBundle介绍和使用
  2. 使用J2SE进行服务器架构技术选型的变迁
  3. ubuntu安装mysql没反应_Ubuntu安装mysql三种安装方式
  4. redis 槽点重新分配 集群_弄懂一致性哈希后我打通了redis分区集群的原理
  5. 免流量手机浏览器_不能不知的华为手机菜单栏,知道3个的算你手机没白买!...
  6. python 鸭子类型_Python中的鸭子输入是什么?
  7. dropbox_Dropbox的5种开源替代品
  8. CSS实现多栏布局的几种方式
  9. Bootstrap 按钮的外观
  10. es6 Atomics对象