Magento speed optimisation

诚然,我接触Magento时间不短了,但直到最近才开始研究Magento的速度,因为我的一个Magento项目已经上马了。

通常Magento要比Zencart, osCommerce, VirtueMart for Joomla跑得慢,但这个没有吓退我。我坚信Magento是我的方向,是因为Magento的ecommerce功能是其它软件望尘莫及的,况且我拥有让Magento加速的硬件资源。(这世界上没有什么是最好的,适合自己的就是最好的)。

我认为选择Magento,首先得有一台独立服务器。虽然我曾成功地在shared hosting环境里运行了Magento,但一个没有速度优化潜力的Magento,就算能跑,又有什么用?Magento内置了很多SEO特性,但如果页面loading time过长,Google也不会喜欢。VPS理论上也能为Magento做速度优化,但一台入门级的独立服务器与一台高性能的VPS价格相当,我会选择前者,以确保所有的优化可能。

其次得有1G以上内存,CPU差一点没关系,因为Magento的速度瓶颈在硬盘,优化手法中很多就用内存代替硬盘。

有了以上两个硬件资源,剩下的就是进行一些软件环境设置。

首先,得是Linux环境。我不是说Magento在Windows下跑不起来,我是说网上大部分建议都是针对Linux提的,除非你有一个Microsoft专家在你旁边,每当你给他一个Linux配置文件,他能为你写一个Windows下的对应文件。

其次,给MySQL Server分配更多的内存。

再次,启用Cache。Cache分三种,一是Magento data cache,Magento系统菜单的Cache Management指的就是这个,默认已经启用。据我观察,data cache单独使用时,对速度提升没多大帮助。二是Linux in-memory file cache,把magento/var/cache指到或软连接到tmpfs。三是php byte cache,开源世界里主要有三种选择,php APC, eAccelerator, xCache。孰优孰劣尚无定论,我看了一些测试结果,我的结论是:小访问量时选php APC,访问量达到负载容量50%以上的选xCache,Magento的开发小组说eAccelerator在处理magento异常时会出错,我就把它剔除了。

如果以上优化都做过了,速度应该很理想了。经济条件许可的话,买多点内存,搞个SCSI, RAID硬盘,换个四核CPU,我就不信Magento会比谁慢。

Pdf zoom print

好多pdf电子书排版页面为16K,打印在A4纸上边缘空白太多,于是我想把pdf放大107%打印,看上去像针对A4排版的。我找到了三种方案:

1. 使用adobe的crop tool选中你所要打印的部分,双击打开一个窗口,page range选为all, 单击ok。你就得到一个只有选中部分的pdf文件。

我试过很好用。

2. Photoshop: File->Automate->Multiple PDF to PSD. With resulting psd files, you can pretty much do anything with them. Either print them directly, or use ps bacth process to change them to jpgs for further size/resolution adjustments, or even OCR them and convert them back to pdf.

我试过,不好用。因为photoshop把pdf的每一页都作为单独psd处理,每一页内容或长或短,psd的图像大小不一,再整合成pdf费时费力。

3. 打开pdf,用distiller打印。不要选shrink oversized paper to paper size;在advanced里改scale的值,直到你满意。

我没试过,估计可行。

A security leak of Godaddy DNS

It is not only affecting my account. I think it is a security hole for all Godaddy nameserver users. I explain in dettails –

I have more than one Godaddy account. I manage my domains in account A, and a deluxe linux share hosting with account B. The nameservers of mydomain.com are set up in account A using xxx.domaincontrol.com. mydomain.com has a wildcard A record pointing to my dedicated server. However, in account B, I can add a domain like sub.mydomain.com. Then when I ping sub.mydomain.com, it will ping out 68.178.254.179 or 72.167.232.13 (share hosting server). That means sub.mydomain.com override the wildcard A record in account A. In theory, other Godaddy share hosting user can also hijack anyname.mydomain.com to point to an ip address of theirs.

It is very scary, isn’t it? I assume Godaddy did not setup DNS infrastructure correctly.