惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
罗磊的独立博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
T
Tailwind CSS Blog
美团技术团队
Y
Y Combinator Blog
I
InfoQ
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
爱范儿
爱范儿
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
A
Arctic Wolf
Hugging Face - Blog
Hugging Face - Blog
S
Security Affairs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
H
Heimdal Security Blog
博客园 - 司徒正美
Latest news
Latest news
H
Hacker News: Front Page
H
Help Net Security
Know Your Adversary
Know Your Adversary
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Secure Thoughts
AWS News Blog
AWS News Blog
V
Vulnerabilities – Threatpost
NISL@THU
NISL@THU
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
The Cloudflare Blog
I
Intezer
N
News and Events Feed by Topic

博客园 - leegool

常见XSD问题 EntitySpace 常用语句 抗投诉空间 C#用WebClient下载File时操作超时的问题 用C# 实现 Zen Cart 的用户密码加密算法 ASP.NET MVC 3 新特性 ASP.NET MVC 局部缓存实现 用户控件缓存 Partial Output Caching - leegool System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据库架构。 关于MarshalByRefObject的解释 MVC upload image MVC上传图片的例子 - leegool jQuery Custom Selector JQuery自定义选择器 - leegool 清楚浏览器缓存 Overview of Full Text Stop Words(MSSQL全文索引的干扰词概括)MSSQL 全文索引的最小单词长度 JQuery性能优化 MS SQL 事务隔离级别 认识ASP.NET 中的 AppDomain 国外服务器上 中文成 显示乱码 Sharing cookie Across domain 跨域cookie访问 cookie跨域 EntitySpaces 2009 Trial Expire 异常
web性能优化(最佳)
leegool · 2009-08-20 · via 博客园 - leegool

简单的列举如下

1. 尽量减少HttpRequest

    方法:

    a. 合并CSS为一个文件,合并JS为一个文件.

    b. 对于背景图片,合并在一起,然后在css中用 position等属性来调用图片. 这种方法很大大型网站都在使用.

    c. image map 简单的说也是把多张图片合并成一张图片,然后在图片的某些区域可以设置“热点”(超链接).       
    d. inline image 使用 Data URLs 来嵌入到面页。
        语法是:  data:[<mediatype>][;base64],<data>
        例子(也可以写在css文件中url(data:[<mediatype>][;base64],<data>)):
              <img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/
                  /ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp
                  V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" 
                  width="16" height="14" alt="embedded folder icon">
             结果显示的是文件夹的图片:
       支持的浏览器有:Opera 7.2+, Firefox, Safari, Netscape, and Mozilla, Internet Explorer 8, 注意Internet Explorer 5-7 不支持。
       缺点:IE5-7不支持
                需要些额外的工作去做reencode,reembed(图片编码工作)
                不般不用于太大的图片,因为URL本身长度限制。   
                Base64编码的图片比其它二制进图片要大33%左右

2. 使用Content Delivery Network(文本发布网络)

     CDN的实现分为三类:镜像 、高速缓存、专线。

    个人网站以及小型网站没必要使用,费用高。

3. Add an Expires or a Cache-Control Header

    a. 对于静态文件(css/js/image..),采用从不过期策略.

        例如 对test_1.0.js 请求的过程应该是这样子的:

        可以使用Fiddler或者HttpWatch来观察

        第一次访问页面,观察js请求状态是200

        第二次刷新页面(F5),观察js请求状态是304

        第三次用鼠标访问首页,观察js请求状态是(Cache)

    b. 对于动态的情况,设置合适的过期时间,如ASP.NET 中就有设计OutPutCache的标签
4. Gzip压缩

    先看一个请求

    HttpRequest Header:

      Accept-Encoding: gzip, deflate

      明白客户端浏览器允许gzip,deflate压缩格式.

    HttpResponse Header:

      Content-Encoding: gzip

    大多数的网站只压缩Html文档,其实完成也可以压缩js/css/xml/json等文本文件。

    image/pdf本身已经压缩过了,没必要再用压缩.

5. 把css文件放在页面顶部

    主要考虑用用户体验这块

6. 把js文件放面页面底部

   主要原因是js请求会block并行请求.即每个hostname有一个js request时,它就不能再有其它请求了.

   The DEFER attribute indicates that the script does not contain document.write

7. 避免使用css expression

    理由是 只有IE支持且旧版本的IE对css expression的性能不好.

8. 独立出js/css 文件

    理由 方便维护,重用,还有缓存效果.

9. 减少DNS lookup时间

    IE自动缓存DNS时间是30分钟

    不同的域名就需要不同的DNS查找时间.

    一个网站一般建议设有2-4台服务器(hostname),一台用于放静态文件(css,js,image等)

10. 压缩js/css文件  

11. 避免重定向请求.

      301永久重定向,搜索引擎索引中保存新的URL

      302请求的网页临时移动到新位置,搜索引擎索引中保存原来的URL

12. 去掉多余的js

13. 配置ETag

     集群的问题上ETag无法解决。生成ETag也浪费CPU时间

     一般不用ETag

14. 并行下载Javascript

      这个我会另外写个文章出来