当前位置: 首页 > news >正文

Steve Souders 高性能网站建设指南14条提升网站页面速度的最佳实践(1)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png


高性能网站建设指南

性能黄金法则:
只有10%-20%的最终用户响应时间花在了下载HTML文档上,其余80%-90%时间花在了下载页面中的所有组件上。
 
规则一减少HTTP请求
图片地图:

<img usemap="#map1" border="0" src="images/demo1.gif" alt="" />
<map name="map1">
     <area shape="rect" coords="0,0,131,131" href="http://www.baidu.com" alt="baidu" />
     <area shape="rect" coords="0,0,231,131" href="http://www.163.com" alt="163" />
</map>

CSS Sprites:比较常用的,不做案列了。

内联图片:节省了HTTP请求,但浏览器不会缓存这种图像。

合并脚本和样式表:一个网站最好不要超过7个脚本/3个样式表

可以用grunt工具合并JS文件(不要问我怎么用,我也没怎么用)

规则二使用内容发布网络
内容发布网络(CDN)就是一组分布中不同地理位置的Web服务器,更加有效地像用户发布内容。
具体的有:360http://libs.useso.com/  BootCDN的 http://www.bootcdn.cn/
如果有好的CDN ,麻烦你告诉我,谢谢!


规则三添加Expires头

<!-- expires 表示网页在浏览者计算机缓存中的过期时间 -->

<meta http-equiv="expires" content="Web,26 Apr 2026 20:00:00 GMT " />

<!-- 使用带有max-age的cache-control指定组件被缓存多久 -->

<meta http-equiv="cache-control" content="max-age=315360000" />

设置Apache模块(图片脚本样式表的过期日期为自请求开始的10年后)

<FilesMatch "\.(gif|jpg|js|css)$">
    ExpiresDefault "access plus 10 years"
</FilesMatch>

为了保证用户获取最新的组件,需要在所有HTML页面中修改组件的文件名;
(最有效的解决方案是修改其所有链接)
将版本号嵌入到组件中的文件名中,能方便准确找到源代码文件。

规则四压缩组件
1配置Apache的gzip模块
mod_gzip
mod_deflate
2服务器的Vary响应头中包含Accept-Encoding
Varry:  Accept-Encoding
3禁用代理缓存但避免了边缘情形缺陷
Cache-Control:Private

转载于:https://my.oschina.net/newgoup/blog/615784

相关文章:

  • 生成日期序列
  • jQuery UI dialog插件出错信息:$(this).dialog is not a function
  • SPOJ QTREE4 lct
  • 2014 I/O归来:Google连接一切
  • kvm虚拟化技术中虚拟机vcpu与物理cpu绑定
  • YMP开发框架快速上手(一)
  • Apache CXF 框架结构和基本原理
  • PostgreSQL 9.5 使用 import foreign schema 语法一键创建外部表
  • 应用如何在后台执行
  • c语言随机数
  • 混合使用Azure LB和ILB访问相同web服务(3)
  • git服务器修改ssh端口后配置方法
  • POJ 1005 I Think I Need a Houseboat
  • compileDebugJavaWithJavac
  • OSI七层与TCP/IP四层模型
  • [PHP内核探索]PHP中的哈希表
  • Android 架构优化~MVP 架构改造
  • Asm.js的简单介绍
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CentOS7 安装JDK
  • javascript从右向左截取指定位数字符的3种方法
  • JavaScript学习总结——原型
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • vue.js框架原理浅析
  • 关于字符编码你应该知道的事情
  • 基于遗传算法的优化问题求解
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 算法-插入排序
  • 我是如何设计 Upload 上传组件的
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 交换综合实验一
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • !!java web学习笔记(一到五)
  • $L^p$ 调和函数恒为零
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (ZT)一个美国文科博士的YardLife
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)scrum常见工具列表
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .chm格式文件如何阅读
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net 中viewstate的原理和使用
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @RequestMapping-占位符映射
  • @SuppressLint(NewApi)和@TargetApi()的区别