我可以做一些有限的测试,但我希望能听到一些在至少中等规模的网站上有真实世界经验的人的意见。优化网站/带宽的每个“前10名”列表上都有两个项目:
- 将尽可能多的JS和CSS合并到一个文件中(以减少往返次数); - 使用内容分发网络(以节省带宽/加快下载速度)。
如今,你几乎可以在Google或Microsoft的CDN(或两者兼有)上找到每个重要的脚本。你甚至可以找到一些相当沉重的项目,比如jQuery ThemeRoller包。使用这些CDN而不是像Amazon S3这样的私有CDN账户的主要优点之一是许多访问者已经从其他网站缓存了这些脚本。即使他们没有,也很难击败像Google这样的网站的性能。
所以,假设我想使用这些公共CDN而不是为了可能更好、更差或相同的性能而额外支付个人CDN账户费用。同时,我正在使用一堆JS/CSS文件,它们都在这些公共CDN上:jQuery、jquery-ui、一个主题、jQuery TOOLS,还可能有其他一些。除了这些之外,我可能还会使用一些公共CDN上没有的脚本,比如superfish和jquery.approach和hoverIntent。真的很普通。看起来我有两个互斥的选择:
- 引用上面列出的脚本的公共CDN。优点是我可以使用别人的带宽,并利用其中一些脚本的流行度。缺点是客户端必须为所有这些文件进行不少于7次往返(4个单独的JS、1个CSS,以及每个合并/缩小的本地文件各1个CSS和JS)。或者... - 将所有东西都压缩成两个庞大的最小化文件(一个用于JS,一个用于CSS),并从自己的Web服务器上提供所有内容。优点是只需要两次往返(至少节省了66%)。当然,缺点是现在我必须自己提供更多的内容。
这似乎是一个艰难的选择,我认为真正理解哪种方法更好(“更好”是客户端加载时间和整体用户体验的函数)的唯一方法是将其放到野外去看看会发生什么。
那么,有没有人在做出这个选择之前遇到过这个问题?如果有,你选择了什么,为什么,结果如何?或者,如果有人尝试在隔离环境中进行测试任务,你是如何做的,结果如何?
P.S. 这一切都描述了一个“Web应用程序”类型的网站——换句话说,不是非常媒体密集型,但可能包含大量实际上占据页面大小相当大一部分的样式和脚本。因此,我认为这不仅仅是一种知识性的练习。
- 将尽可能多的JS和CSS合并到一个文件中(以减少往返次数); - 使用内容分发网络(以节省带宽/加快下载速度)。
如今,你几乎可以在Google或Microsoft的CDN(或两者兼有)上找到每个重要的脚本。你甚至可以找到一些相当沉重的项目,比如jQuery ThemeRoller包。使用这些CDN而不是像Amazon S3这样的私有CDN账户的主要优点之一是许多访问者已经从其他网站缓存了这些脚本。即使他们没有,也很难击败像Google这样的网站的性能。
所以,假设我想使用这些公共CDN而不是为了可能更好、更差或相同的性能而额外支付个人CDN账户费用。同时,我正在使用一堆JS/CSS文件,它们都在这些公共CDN上:jQuery、jquery-ui、一个主题、jQuery TOOLS,还可能有其他一些。除了这些之外,我可能还会使用一些公共CDN上没有的脚本,比如superfish和jquery.approach和hoverIntent。真的很普通。看起来我有两个互斥的选择:
- 引用上面列出的脚本的公共CDN。优点是我可以使用别人的带宽,并利用其中一些脚本的流行度。缺点是客户端必须为所有这些文件进行不少于7次往返(4个单独的JS、1个CSS,以及每个合并/缩小的本地文件各1个CSS和JS)。或者... - 将所有东西都压缩成两个庞大的最小化文件(一个用于JS,一个用于CSS),并从自己的Web服务器上提供所有内容。优点是只需要两次往返(至少节省了66%)。当然,缺点是现在我必须自己提供更多的内容。
这似乎是一个艰难的选择,我认为真正理解哪种方法更好(“更好”是客户端加载时间和整体用户体验的函数)的唯一方法是将其放到野外去看看会发生什么。
那么,有没有人在做出这个选择之前遇到过这个问题?如果有,你选择了什么,为什么,结果如何?或者,如果有人尝试在隔离环境中进行测试任务,你是如何做的,结果如何?
P.S. 这一切都描述了一个“Web应用程序”类型的网站——换句话说,不是非常媒体密集型,但可能包含大量实际上占据页面大小相当大一部分的样式和脚本。因此,我认为这不仅仅是一种知识性的练习。