我们只是没有-根本没有。曾经 我们会一遍又一遍地说
缓存!=性能
您的站点需要快速而无需添加FPC(或为此使用Varnish)。总会有一段时间内容没有准备好(您的上述情况)。
在无货商店中,使用FPC进行页面加载的时间不会比非FPC印象深刻。Magento很高兴能够< 400ms
在标准缓存(类别/产品/搜索页面)上加载页面。FPC会将其降低到< 80ms
-但有一些警告。
- 库存/价格信息已过期,直到失效或TTL到期为止
新项目/更相关的搜索已过期,直到失效或TTL到期
等等
为什么依赖FPC(或清漆)是个坏主意
如果您要继续确保手动填充缓存,则可能有一些原因
- 您没有足够的自然资源来保持缓存的就绪状态(请参阅“ FPC有用之处”)
- 没有它们,您的网站速度太慢
您无法缓存所有内容
如果您的商店只有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.4s,并且您有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
这就是您的生产服务器,在100%CPU负载下持续15分钟。您将按比例减小爬网速度,使其与所需的TTL成比例。
因此,如果您希望内容具有3600s TTL,则抓取速度可能会慢4倍-即。仅25%的CPU用于抓取。仅仅是为了使类别内容保持最佳状态,这是很多资源-我们目前还没有考虑产品,搜索字词或其他商店视图的因素
实际上,只要查看catalog_url_rewrites
表中组合的绝对大小(甚至不考虑分层导航中的参数),就可以知道您最终需要抓取多少个URL。
当然,每个商店都会有所不同,但是我想带回家的是,将站点爬到主要的FPC上是不切实际的。只要确保您的商店很快就能开始。
FPC有用的地方
FPC的优势发挥作用的地方是负载很重的商店-那里的流量确实很高,仅凭脚步下降就能自然而持续地填充缓存。
然后,FPC通过减少常见请求内容的基础架构开销来发挥作用-减少了对Magento后端的重复调用。
因此,我们发现FPC非常适合在流量非常高的情况下进行部署-不是减少页面加载时间-而是减少资源使用。
谁在乎,我还是想爬
好吧,那你有两个选择
- 从模板抓取(例如站点地图)
- 逐页提取链接并抓取每个链接
而且有很多实用程序可以同时完成这两个,这些都是我所知道的
- 魔法师
- HTTrack
- 纳奇
- 斯菲德
- 爬虫4j
使用法师测试
您可以轻松地使用Mage-Perftest搜寻您的商店,先下载它
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站点地图定义抓取过程(您可以通过将任意URL制作为站点地图来进行自定义,前提是这些URL都包装在<loc></loc>
标记中)。以下命令将从站点地图文件中读取所有URL,然后在1440分钟(1天)的时间内对URL进行爬网(仅PHP)。如果服务器超过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
如果您在1天内抓取了1000个网址,则大约为。每86秒1个请求〜目标0.011 RPS