J'ai une collection qui prend beaucoup de temps à charger. Ce que je voudrais, c'est le mettre en cache (APC, Memcache). Il n'est pas possible de mettre en cache l'intégralité de l'objet (car il ne peut pas être désérialisé et il est supérieur à 1 Mo). Je pense que la mise en cache des données de la collection ($ col-> getData()) est le chemin à parcourir, mais je n'ai trouvé aucun moyen de reconstruire l'objet basé sur ce tableau. Des indices?Comment mettre en cache une collection dans Magento?
Répondre
Je ne sais vraiment pas, mais j'ai cherché tous les fichiers qui ont le mot "cache" dans les noms de fichiers "Collection.php" et j'ai obtenu quelques résultats. L'exemple le plus prometteur à regarder pourrait être la méthode Mage_Sales_Model_Entity_Quote_Item_Collection (_getProductCollection()
). On dirait Varien_Data_Collection
(qui est une classe parente de toute collection magento) a quelques méthodes liées au cache: initCache() and _getCacheInstance().
Je ne peux pas dire que je les ai déjà utilisés, mais pourrait être utile un jour.
Bonne chance.
Vous pouvez obtenir plus d'informations ici: Can I use Magento's Caching layer as a Key/Value Store?
Je vais poster plus d'informations là-bas que je trouve.
Collections ont déjà une certaine mise en cache incorporée mais ils ont besoin d'un peu incitant donc mettre cela dans le constructeur d'une collection:
$cache = Mage::app()->getCacheInstance();
$prefix = "SomeUniqueValue";
$this->initCache($cache, $prefix, array(Mage_Catalog_Model_Product::CACHE_TAG));
Choisissez balises appropriées au contenu de la collection afin qu'il sera automatiquement vidée . De cette façon, construit un ID basé sur la requête en cours d'exécution, il est plus utile lorsque la collection est filtrée, ordonnée ou paginée - il évite un conflit de version.
En règle générale, cela ne sert à rien car lorsque vous récupérez des données, vous finissez presque toujours par les afficher, probablement en HTML, il est donc logique de mettre en cache la sortie à la place. La mise en cache des blocs est largement utilisée et mieux documentée.
- 1. Comment mettre en cache une applet Java?
- 2. Comment mettre en cache une liste/un dictionnaire dans Pylons?
- 3. Comment mettre en cache une liste d'objets dans ASP.NET
- 4. Comment mettre en cache l'URL XML?
- 5. Comment mettre en cache résultat de Html.RenderPartialView
- 6. JQuery: Comment mettre en cache DOM?
- 7. Comment mettre en cache IEnumerable var
- 8. jQuery - comment mettre en cache $ .get request
- 9. Comment puis-je mettre en cache les images que je tire d'une base de données magento via ajax?
- 10. Comment faire pour mettre en cache des éléments dans l'iPhone
- 11. Comment mettre en cache des images dans GeckoFX
- 12. Comment mettre en cache du texte entré dans UITextField?
- 13. Mettre en cache une page protégée par une connexion
- 14. Comment créer une collection paresseuse et mise en cache dans Silverlight/CSLA
- 15. Comment mettre en cache les dernières données insérées dans MySQL?
- 16. Comment mettre en cache des éléments dans un filtreAttribute
- 17. Comment mettre en cache des données dans ios
- 18. Comment mettre en cache des images dans asp.net
- 19. Itération sur une grande collection dans le problème django - cache
- 20. comment mettre en cache les données de table en java
- 21. Création d'une méthode générique pour mettre en cache une entité
- 22. Utilisation de StructureMap pour mettre en cache une instance nommée
- 23. Mettre en cache une page Web sur l'iPhone avec UIWebView
- 24. Magento - Comment filtrer une collection de produits en utilisant 2 filtres de catégorie?
- 25. Magento Collection Joindre entre différents modules
- 26. Magento 1.3 Problème de cache de mise en page personnalisée
- 27. Est-ce possible de mettre UIWebView en cache dans l'iPhone?
- 28. Empêcher flex de mettre en cache une ressource externe
- 29. Comment puis-je récupérer un seul produit d'une collection Magento?
- 30. nginx pour mettre en cache l'URL dynamique
Comment je peux mettre en cache une collection à la place depuis le Bloc Objetc ??? – davidselo
Je ne comprends pas la question. – clockworkgeek
Si je peux faire un bloc avec Mage :: getModel ('example/example') -> getCollection() -> initCache (...). Créer une nouvelle collection depuis l'instance de bloc – davidselo