2010-05-19 33 views
1

这里的被通过Ajax调用的脚本:如何缓存我通过ajax从magento数据库中提取的图像?

<?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,我已经上涨到导航链接,然后做一些工作,最终只是传回的所有产品图片类别。

我在拖放构建手镯类型的应用程序时使用这种方法,返回的图像数量有时在500年代。所以它在传输过程中会变得非常紧张,有时候会持续10秒左右。

我知道我会通过某种方式缓存他们,只是不知道如何去做。任何帮助深表感谢。

谢谢。

-Wes

回答

0

从代码的外观上来看,你可能已经“缓存”的形象的选择大小。也就是说,Magento无需调用GD即时调整图像大小。

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

除此之外,您可能希望制定一个策略,使用较少的图像并只在需要时才请求更多图像。用户不可能真的以任何有意义的方式专注于500张图像。

希望有帮助!

谢谢, Joe

相关问题