这是我当前的服务器场景。
我在 Rackspace Cloud 实例(16GB RAM)上运行,在 CentOS 5.5 安装上使用 cPanel/WHM。
我目前正在运行大约 10 个 Magento 网站,大小各异(从中型到小型)
随着时间的推移,我注意到网站的速度变慢了。我对数据库和其他方面进行了大量调整,以帮助提高 Magento 的性能。
我最近启用了全局 gzip 压缩通过向 apache 配置中添加以下 Post Include。
<IfModule mod_deflate.c>
# Insert filter on all content
SetOutputFilter DEFLATE
# Insert filter on selected content types only
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
我立即注意到网站的加载时间更快了,我非常高兴。然而几分钟后,我发现响应时间增加了……完全抵消了性能提升,使网站的加载时间比使用 gzip 之前多了 2-3 秒。
我的理解是 gzip 不会占用太多额外的 CPU,但如果组合 10 个不同的网站,情况会如此吗?
有没有办法让内容仅进行一次 gzip 压缩,然后让 apache 查找已经进行 gzip 压缩的文件并使用它,而不是为每个请求一遍又一遍地压缩每个文件?
任何对此的见解都将不胜感激!
答案1
也许你可以看看修改磁盘缓存
答案2
有一种方法可以先对您的内容进行 gzip 压缩,然后使用一些重写 foo 来实现这一点(理论上)...但是...如果您对网站性能感兴趣,请查看反向代理缓存,例如 varnish。虽然我不使用 magento,但 varnish 似乎与它集成得很好:http://www.magentocommerce.com/magento-connect/pagecache-powered-by-varnish.html
嗨嗨。