预缓存Magento图像

时间:2011-08-05 01:20:59

标签: magento

我们正在开发的网站第一次加载产品需要相当长的时间。我假设此时Magento正在缓存所有呈现给用户的图像(总共6个,从相当大的分辨率2400 x 1200开始)。

我的假设是基于以下事实:下次清除本地缓存后加载产品时,产品和图像的加载速度要快得多。

对我来说,简单的解决方案是每次访问每个产品,这在我们因为某种原因需要刷新图像缓存的情况下并不理想。

我确信我可以编写一个预先缓存每个图像的脚本,但我很好奇是否有类似这样的内置机制?

2 个答案:

答案 0 :(得分:1)

由于清除本地缓存后页面仍然很快,因此您必须关注服务器缓存。这里的答案是调整大小的图像已经单独保存到media/catalog/product/cache而不是var/cache/的普通缓存中。如果您查看系统>缓存管理您将看到有一个单独的按钮用于清除这些图像,因此除非您确实需要,否则请避免单击该按钮。

答案 1 :(得分:1)

我对预缓存有类似的需求,或者至少在清除后重建缓存。没有内置任何内容,所以我编写了一个快速而脏的脚本来解析站点地图xml文件并从命令行抓取该站点...从而导致magento为所有页面生成图像缓存。

该脚本假定您在同一目录中有一个sitemap.xml。它意味着从Web根目录之外的命令行运行。

<?php

ini_set("memory_limit","500M");
ini_set('max_execution_time', 600);

$d = file_get_contents('sitemap.xml');

$data = @new SimpleXMLElement($d);

$cnt = count($data);

$i = 1;
foreach ($data as $row) {
  $url = $row->loc;
  echo "$i of $cnt : $url \n";
  $buffer = file_get_contents($url);
  $buffer = '';
  flush();
  $i++;
}