是否在一些建议/反馈如果可能的话。memcache php缓存js css和图像
我正在开发一个大型项目,开发团队要求我们合并所有的JS/CSS并将其与memcache缓存为一个文件,以加快速度。
我担心的是这不是我习惯于工作的方式,我只想加载每页所需的JS和CSS,因为我认为这是一个明显的原因。
我也一直在寻找一些其他高流量的网站,似乎没有其他人这样做。
任何人都可以给我一些这种方法的优点和缺点吗?
在此先感谢
理查德
是否在一些建议/反馈如果可能的话。memcache php缓存js css和图像
我正在开发一个大型项目,开发团队要求我们合并所有的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
不是一个戏剧性的差异,b用户等待时间仍然差不多半秒!
现在 - 当他们是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的插件,等等,等等等等,这东西开始更加重要。
你在这里做了一个很好的例子,所以我会暂时给你一个+1,尽管我仍然不同意至少部分,我认为从长远来看,一个好的客户端缓存头设置更重要。但我必须说,你的情况很好。 – DaveRandom
@DaveRandom - 谢谢,戴夫!你不会反对我提到好的缓存标题的重要性......但是一旦被照顾,还有另一个祸害。 –
也许你不想把它变成一个真正的问题 – baloo
似乎你在这里有两个问题 - 我应该使用memcached缓存js/css,并且应该将所有js/css合并到一个文件中。我建议你分别发布这两个问题,因为它们确实无关。 –
我想这个问题是什么反对缓存一个巨大的CSS和JS文件,并反对实际上只使用每页需要什么,让浏览器缓存它,以及利弊是什么利弊呢? – user989952