memcache php caching js css and images


memcache php caching js css and images

如果可能的话,是在一些建议/反馈之后。

我正在做一个大型项目,开发团队要求我们合并所有 JS/CSS 并将其与 memcache 缓存为一个文件,以加快速度。

担心这不是我习惯的工作方式,我只想加载每页所需的 JS 和 CSS,我认为这是一个明显的原因。

我也一直在看其他一些高流量的网站,似乎没有其他人这样做。

任何人都可以给我这种方法的一些利弊吗?

提前致谢

理查

"我一直在看其他一些高流量的网站,但似乎没有其他人这样做">

真? 这让我很惊讶... 它被认为是减少页面加载时间的第一步。 看这里:http://developer.yahoo.com/performance/rules.html。 如果您想测试对加载时间最佳实践的遵守情况,您可能还想尝试他们的性能测试工具 YSlow:http://developer.yahoo.com/yslow/。

这就是为什么这被认为是最佳实践的原因:浏览器每个特定服务器的限制是大约 8 个同时连接,限制为 2 个(对于不符合标准的浏览器,则更多(。 因此,如果您为给定页面生成多个文件,那么它们将在某种程度上串行加载,因为您的浏览器将对您的服务器进行十五次往返,一次两次。

因此,让我们看看这是如何发挥作用的。 假设您有 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/秒(和更多的延迟(250毫秒(:

((2 * .1 seconds) + 0.250 seconds) * 7.5 = 3.375 seconds

((1 * 1.5 seconds) + 0.250 seconds) * 1 = 1.750 seconds

哇! 现在,所有这些单独的小文件几乎使页面加载时间增加了一倍!

添加一大堆其他文件,你花哨的TypeKit加载,广告服务器加载,Facebook插件等等等,这些东西开始变得更加重要。