Magento Enterprise全页缓存的性能优势是众所周知的。可能还不那么众所周知的是,要实现这一目标的全部利益,它必须是完全人口组成的,尤其是在您只有几页的大型产品集中,因此可以利用有机交通足够快速。

Magento包括一个内置的Cronjob,可以在清晨爬行该站点并在FPC上加热。

我已经看到和听说过,清晨工作需要花费太长时间,阻止其他工作跑步而引起的问题,并想知道其他人使用或建议使用什么来做到这一点。我有几个想法:

  • 将Shell脚本汇总到生成的SiteMap文件中的每个页面。
  • 使用单独的crontab条目和一个简短的PHP脚本来引导Magento并直接执行轨道过程。

欢迎任何想法和/或经验!

有帮助吗?

解决方案

您可以使用 围城 结合 sitemap.xml 文件,喜欢 magespeedTest 做。

#categories
curl http://yourmagentostore.com/sitemap.xml | sed 's/\<url\>/\<url\>\n/g' | grep 0.5 | sed 's/.*loc>\(.*\)<\/loc.*/\1/g' > urls.txt
#products
curl http://yourmagentostore.com/sitemap.xml | sed 's/\<url\>/\<url\>\n/g' | grep 1.0 | sed 's/.*loc>\(.*\)<\/loc.*/\1/g' >> urls.txt

然后运行

siege -i -c 1 -t 7200s -f urls.txt

内容来自 这里.

其他提示

我们只是没有 - 一点。曾经。我们会一遍又一遍地说

缓存!=性能

您的网站 需要 在不添加FPC的情况下快速(或为此事实)。总是会有一个时间未启动内容的时间(您上面的情况)。

在卸载的商店中,使用FPC的页面加载时间不应该比非FPC更令人印象深刻。 Magento非常幸福 < 400ms 标准缓存(类别/产品/搜索页面)上的页面加载时间。 FPC会将其降低到 < 80ms - 但带有警告。

  1. 股票/价格信息已过时,直到无效或TTL到期
  2. 新项目/更多相关搜索已过时,直到无效或TTL到期

    等等

为什么依赖FPC(或Varnish)是个坏主意

如果您想不断确保手动启动缓存,则可能有一些原因

  1. 您没有足够的自然脚步来保持缓存 (请参阅“ FPC有用的地方”)
  2. 没有他们,您的网站太慢了

你不能缓存一切

如果您仅使用5个类别的商店,则嵌套了2个级别,5个可过滤属性,5个属性选项和1000个产品;那是 很多 可能的组合。

25个选项可供选择,连续选择5次 - 我不是统计学家, ,但我知道那是...(假设属性选项的数量并不能完全减少)

25 possible URLs on the first selection
20 possible URLs on the second selection
15 possible URLs on the third selection
10 possible URLs on the fourth selection
5  possible URLs on the fifth selection

5^5 = 3,125 possible combinations (for top level categories)
5^4 = 625 possible combinations (for 2nd level categories)

好的,上面的情况并不是我想象的,在3次点击之内 - 可用产品的数量将足以减少以供客户找到其产品。所以即使是...

25 possible URLs on the first selection
10 possible URLs on the second selection
3 possible URLs on the third selection

5^3 = 125 possible URL combinations 

然后以5个类别为单位,即625个URL。在此阶段,我们正在谈论一个很小的目录,并且完全忽略了所有产品URL。

如果您有嵌套类别,我们也不会考虑 is_anchor 在上面,它将指数增长。

因此,要爬行书页 - 您要么希望您的页面加载时间良好且一开始很低,因此这是一个快速轻量级的过程(因此击败了爬网的目的),或者您有在TTL到期之前,足够的时间可以完成。

如果您的页面的页面加载时间为0.4,并且您有一个8核CPU,则...

625 * 0.4 = 250 / 8 = 31 seconds

0.5分钟,还不错 - 但让我想象您有2页的加载时间

625 * 2 = 1250 / 8 = 156 seconds

但是,如果您采取了最大可能的情况

3,750 * 2 = 7,500 / 8 = 937 seconds ~ 15 minutes

因此,这就是您的生产服务器,15分钟以下100%的CPU负载。您将与所需的TTL成比例地降低爬网速度。

因此,如果您希望内容具有3600s TTL,则爬网可能会慢4倍 - 即。只有25%的CPU专用于爬网。这是很多资源,只是为了保持类别内容的准备 - 我们甚至在此阶段都没有考虑到产品,搜索词或其他商店视图

实际上,仅查看巨大的组合大小 catalog_url_rewrites 表(甚至没有从分层导航中考虑参数中的问题)将有一个想法,即您可以结束多少个URL需要爬网。

每家商店肯定会有所不同,但是我想回家的是,将网站爬上Prime FPC并不实际。 只需确保您的商店从.

FPC有用的地方

FPC的好处是在一家大量装载的商店中发挥作用 - 您确实有很高的交通流量,并且缓存自然而然地被脚落下而不断地启动。

然后,FPC通过减少通常要求的内容的基础架构开销来发挥作用 - 减少对Magento后端的重复呼叫。

因此,我们发现,当您拥有非常高的流量水平时,FPC非常适合部署 - 不要减少页面加载时间 - 而是减少资源使用情况。

谁在乎,我仍然想爬行

好吧,那你有两个选择

  1. 从模板爬网(例如站点地图)
  2. 提取链接逐页,每个页面爬网

而且有很多公用事业要做,这是我知道的

  1. 法师浪潮
  2. httrack
  3. 蔬菜
  4. Sphider
  5. crawler4j

使用法师浪潮

您可以很容易地使用法师 - 浪漫主义者爬行,首先下载它

wget http://sys.sonassi.com/mage-perftest          (64bit) OR
wget http://sys.sonassi.com/mage-perftest-i386     (32bit)
chmod +x http://sys.sonassi.com/mage-perftest*

然后使用Magento Sitemap来定义爬网过程(您可以通过制作任何URL的站点地图来自定义此,前提是URL包裹在 <loc></loc> 标签)。以下命令将读取SiteMap文件中的所有URL,然后在1440分钟(1天)的过程中爬网(仅PHP)URL。如果服务器超过20%的CPU或平均负载2-爬网将暂时暂停。

./mage-perftest -u www.example.com -s www.example.com/sitemap.xml -r auto -b -d 1440 -z -a 20 -l 2  

如果您有1000个URL,则在1天内爬行,那将是大约。 1要求每86秒(s)〜目标0.011 rps

这些天,我将全力以赴地写一篇博客文章,但与此同时 wfpc.

测试性能

您可以测试Magento网站的性能

./wfpc -t http://mymagentosite.com/sitemap.xml

Finished testing your Magento site performance
Total download time (in seconds)   : 5.0269110202789
Total download time (formatted)    : 0:0:5.026
Average page time (in milliseconds): 502.69110202789

FPC变暖

您可以加热FPC,它将击中SiteMap.xml中的每个URL。

./wfpc -w http://mymagentosite.com/sitemap.xml

您还可以在请求之间延迟延迟,这是请求之间的1秒钟延迟。

./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml

测试模式仅随机命中10个URL,因此,一旦您加热了FPC,就可以运行测试模式以找出FPC产生的差异!

想法

就我个人而言,我认为一个温暖的人是有意义的...在一个约40页的小网站上,下载时间大约将FPC切成一半。在一个使用lesti_fpc的近40,000种产品的大型网站上,将APCU用作后端,我将使用超过200MB的缓存使用,坦率地说,这在8GB生产服务器上没有。

许可以下: CC-BY-SA归因
scroll top