减少HTTP请求
- 当打开网页的时候, 一切内容都属于HTTP请求
- 图片, js, css 合并
使用CDN(内容分发网络)
- 再离你最近的地方, 放置一台性能好, 链接顺畅的副本服务器, 让你能够以最近的距离, 最快的速度获取内容
添加expire/cache-control头
- expire头的内容是一个时间值, 值就是资源在本地的过期时间, 存在本地缓存阶段, 找到一个对应的资源值, 当前时间还没超过资源的过期时间, 就直接使用这一个资源, 不会发送http请求
- cache-control 是http协议中常用的头部之一, 负责控制页面的缓存机制, 如果该头部指示缓存, 缓存的内容也会存在本地, 操作流程和expire相似, 但也有不同的地方, cache-control有跟多的选项, 而且也有更多的处理方式
启用GZip压缩
- 思想: 把文件放在服务器Gzip压缩
将css放在最上边
- IE: 放在底部, 会禁止页面显示, 网速较低的情况下会显示空白
- FF: 页面会重绘, 出现闪烁
将script放在页面最下面
- js 会阻止页面的加载
避免在css从使用expressions
将js 和 css 放到外部文件中
- 提取出来:
- 提高js和css的复用性
- 减小页面体积
- 提高可维护性
- 增加了请求数量
- 写在页面内
- 减少页面请求
- 提升页面渲染速度
- 写在页面内情况
- 只应用于一个页面
- 不经常被访问
- 脚本和样式很少
减少DNS查询
- 域名 ==> IP ==> 服务(20ms)
- IE: 20min
- Google: 60s
- FF: 60s
- 时间长: 减少DNS重复查找
- 时间段: 及时检测变化, 保证正确性
压缩JavaScript和css
避免重定向
- 原始请求被转移到了其他请求
- 301: 用户请求的页面被移动到另外的位置,
永久重定向 - 302:用户请求的页面被找到了,但不在原始位置,
临时重定向 - 会在header中 返回新地址, body是空白
移除重复脚本
配置实体标签(ETag)
- 在请求头, 唯一资源, 唯一标识, 唯一地址, 如果一致, 返回304, 使用本地
使用Ajax缓存
- POST: 每次都会被执行, 不会被缓存
- GET: 同一地址不会重复执行, 可以被缓存
- 两个区别:
- get可以被看到
- 服务器端获取: Request.QueryString, post是Request.Form
- get只有2kb
- get地址后的参数会被忽略