2010-05-19 2 views
1

scénario est ici d'être appelé par ajax:Comment puis-je mettre en cache les images que je tire d'une base de données magento via 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"; 
} 

Je ne fais que passer dans l'ID de catégorie, que je suis cloué sur les liens de navigation, puis en faisant un peu de travail pour finalement juste passer de toutes les images de produits dans ce Catégorie. J'utilise ceci sur un glisser-déposer d'une application de type build-a-bracelet, et la quantité d'images retournées est parfois dans les 500s. Donc, il est assez bloqué pendant la transmission, parfois 10 secondes ou plus.

Je sais que je ferais du bien en les mettant en cache d'une manière ou d'une autre, mais je ne sais pas comment s'y prendre. Toute aide est très appréciée.

Merci.

-Wes

Répondre

0

De l'apparence de votre code, vous êtes probablement déjà « mise en cache » la taille de l'image choisie. Autrement dit, Magento n'a pas besoin d'invoquer GD pour redimensionner l'image à la volée. Cependant, les 500 images doivent encore être demandées à Apache, ce qui va être une douleur complète la première fois, peu importe ce que vous faites. Assurez-vous qu'Apache est configuré pour permettre la mise en cache des fichiers de support tels que ces fichiers JPG pendant une période assez longue et que vous ne devriez pas avoir à télécharger de nouveau les images à chaque chargement de page. En dehors de cela, vous voudrez peut-être concevoir une stratégie pour utiliser moins d'images et demander plus que ce dont vous avez besoin. Il est peu probable qu'un utilisateur puisse vraiment se concentrer sur 500 images de manière significative.

Espérons que ça aide!

Merci, Joe

Questions connexes