2010-05-19 70 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

相關問題