2011-08-05 4 views
1

Un site Web que nous mettons au point prend un certain temps à charger un produit la première fois. Je suppose qu'en ce moment Magento met en cache toutes les images qui sont présentées à l'utilisateur (6 au total, à partir d'une assez grande résolution 2400 x 1200). Mon hypothèse est basée sur le fait que la prochaine fois que je chargerai le produit après avoir vidé mon cache local, le produit et les images se chargeront beaucoup plus rapidement. La solution simple pour moi est de visiter chaque produit une fois, ce n'est pas idéal dans le cas où nous devons vider le cache d'image pour une raison ou une autre.Pré-cache images Magento

Je suis sûr que je peux écrire un script qui va précharger chaque image, mais je suis curieux de savoir s'il existe un mécanisme intégré pour quelque chose comme ça?

+1

Est-ce que seules les images affectent le temps de chargement? vous avez. Htaccess mis en place correctement avec les paramètres optimaux pour compresser css/js? aussi si une image 2400 x 1200 est nécessaire vérifier un joli CDN pour aider à répartir la charge. vous pouvez également essayer de charger l'image alt après avoir cliqué sur la vignette. –

+0

.htaccess est configuré correctement, nous compressons JS/CSS. Nous utilisons un CDN et ne chargeons que les vignettes, pas l'image qui sera demandée une fois que la vignette aura été cliquée. – Anthony

Répondre

1

Étant donné que la page reste rapidement après avoir effacé le cache local, vous devez vous préoccuper du cache du serveur. La réponse ici est des images redimensionnées sont déjà enregistrées séparément dans le cache normal, dans media/catalog/product/cache par opposition à var/cache/. Si vous regardez dans Système> Gestion du cache, vous verrez qu'il y a un bouton séparé pour effacer seulement ces images, donc à moins que vous en ayez vraiment besoin, en évitant de cliquer sur ce bouton.

+0

Correct. Ceci est une question sur le cache du serveur. Je suis conscient que vous pouvez effacer le cache via le tableau de bord d'administration, mais je cherche à mettre automatiquement en cache toutes les images - cela impliquerait d'exécuter les images via la méthode resize ($ this-> helper ('catalog/image') -> init ($ _product, 'small_image') -> resize (500, 500);) pour chaque taille nécessaire sur l'ensemble du site. Il y avait peut-être une chance que magento ait une fonctionnalité qui analyserait tous ces appels de redimensionnement et pourrait automatiquement le faire pour moi. – Anthony

+1

Vous voulez _pre-cache_ les images. Je comprends maintenant. – clockworkgeek

+0

pré-cache est un langage beaucoup plus clair. Je vous remercie. – Anthony

1

J'avais un besoin similaire en pré-mise en cache, ou au moins en reconstruction du cache après une purge. Il n'y a rien de prévu pour cela, j'ai donc écrit un script rapide et sale pour analyser le fichier XML du sitemap et explorer le site à partir de la ligne de commande ... provoquant ainsi magento à générer le cache d'image pour toutes les pages.

Le script suppose que vous avez un sitemap.xml dans le même répertoire. Il est destiné à être exécuté à partir de la ligne de commande en dehors de la racine 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++; 
} 
Questions connexes