我怎么能通过ajax缓存我从magento数据库中提取的图像?

时间:2010-05-19 02:24:29

标签: ajax caching magento

这是通过ajax调用的脚本:

<?php

require_once '../app/Mage.php';
umask(0);

/* not Mage::run(); */
Mage::app('default');

$cat_id = ($_POST['cat_id']) ? $_POST['cat_id'] : NULL;

try { 

    $category = new Mage_Catalog_Model_Category();
    $category->load($cat_id);

    $collection = $category->getProductCollection();

    $output = '<ul>';

    foreach ($collection as $product) {

    $cProduct = Mage::getModel('catalog/product');
    $cProduct->load($product->getId());

        $output .= '<li><img id="'.$product->getId().'" src="' . (string)Mage::helper('catalog/image')->init($cProduct, 'small_image')->resize(75) . '" class="thumb" /></li>';
    }

    $output .= '</ul>';

    echo $output;

} catch (Exception $e) {

    echo 'Caught exception: ', $e->getMessage(), "\n";
}

我只是传递了类别ID,我已将其添加到导航链接上,然后做一些工作,最终只传回该类别中的所有产品图片。

我在拖放build-a-bracelet类型的应用程序时使用它,返回的图像数量有时在500s。所以它在传输过程中非常紧张,有时甚至是10秒左右。

我知道通过某种方式缓存它们会做得很好,只是不确定如何去做。非常感谢任何帮助。

感谢。

-Wes

1 个答案:

答案 0 :(得分:0)

从代码的外观来看,您可能已经“缓存”了所选图像的大小。也就是说,Magento不必调用GD来动态调整图像大小。

然而,仍然需要从Apache请求500张图像,无论你做什么,这将是第一次完全痛苦。确保Apache配置为允许浏览器大小缓存诸如JPG之类的媒体很长一段时间,并且您不必在每次加载页面时重新下载图像。

除此之外,您可能希望设计一种策略来使用更少的图像,并仅在需要时请求更多图像。用户不太可能以任何有意义的方式真正关注500张图像。

希望有所帮助!

谢谢, 乔