如果可能的话,在一些建议/反馈之后。
我正在做一个大型项目,开发团队要求我们合并所有 JS/CSS 并将其与 memcache 一起缓存为一个文件,以加快速度。
我担心这不是我习惯的工作方式,我只想加载每个页面所需的 JS 和 CSS,我认为这是一个明显的原因。
我也一直在寻找其他一些高流量网站,但似乎没有其他人这样做。
谁能给我一些这种方法的优缺点?
提前致谢
理查德
如果可能的话,在一些建议/反馈之后。
我正在做一个大型项目,开发团队要求我们合并所有 JS/CSS 并将其与 memcache 一起缓存为一个文件,以加快速度。
我担心这不是我习惯的工作方式,我只想加载每个页面所需的 JS 和 CSS,我认为这是一个明显的原因。
我也一直在寻找其他一些高流量网站,但似乎没有其他人这样做。
谁能给我一些这种方法的优缺点?
提前致谢
理查德
“我一直在寻找其他一些高流量的网站,但似乎没有其他人这样做”
真的吗?这让我有点吃惊……这被认为是减少页面加载时间的第一步。见这里:http: //developer.yahoo.com/performance/rules.html。如果您想测试对加载时间最佳实践的遵守情况,您可能还想尝试他们的性能测试工具 YSlow:http: //developer.yahoo.com/yslow/。
这就是为什么这被认为是最佳实践的原因:浏览器限制为大约 8 个同时连接,每个特定服务器限制为 2 个(对于不合格的浏览器更多)。因此,如果您为给定页面生成多个文件,那么它们将在某种程度上连续加载,因为您的浏览器将与您的服务器进行 15 次往返,一次两次。
那么让我们看看这是如何进行的。假设您有 15 个文件,每个文件大小为 10k,或者您可以将它们组合成一个 150k 的文件。假设服务器的延迟为 65 毫秒,下载速率仅为 25k/秒。让我们算一下......这是等式:
$page_load_time = ( ($simultaneous_connections * $load_time_per_file)
+ $latency_per_request )
* ($number_of_files/$request_cycles)
在哪里:
$request_cycles = max(1, ($number_of_files/$simultaneous_connections))
因此,有 15 个文件,每个文件 10k:
((2 * .4 seconds) + .065 seconds) * 7.5 = 6.4875 seconds
或使用单个 150k 文件:
((1 * 6 seconds) + 0.065 seconds) * 1 = 6.065 seconds
差别不大,但用户等待时间仍然接近半秒!
现在 - 当他们在 3g 连接时会发生什么?还是有一点 wi-fi 问题?让我们尝试更多的带宽(100k/sec)和更多的延迟(250ms):
((2 * .1 seconds) + 0.250 seconds) * 7.5 = 3.375 seconds
或者
((1 * 1.5 seconds) + 0.250 seconds) * 1 = 1.750 seconds
哇!现在所有这些单独的小文件几乎使页面加载时间增加了一倍!
添加一大堆其他文件,你喜欢的 TypeKit 负载、广告服务器负载、Facebook 插件等等等等,这些东西开始变得更加重要。