jd440 Posted March 25, 2015 Share Posted March 25, 2015 (edited) Bonjour a tous, J'ai developpé pas mal de module tuilisant le cache. Cependant je me suis toujours demander si il était possibvle de supprimer automatique le cache périmer. Exemple $cacheId = $this->getCacheId($this->name.'|prod|'.(int)$params['product']->id.'|'.date("W")); if (!$this->isCached('blockrssperso_product.tpl', $cacheId)) { [...] } return $this->display(__FILE__, 'blockrssperso_product.tpl', $cacheId); Du coup le cache est regenéré chaque semaine mais en conservant les anciens? Sinon j'imagine reconstituer le cahce de la manière suivante: $cacheId = $this->getCacheId($this->name.'|'.date("W").'|prod|'.(int)$params['product']->id); Puis mettre en place un cron qui supprimer tout les dossier inférieur à la semaine en cours. Existe t il une facon automatique des le supprimer? Edited October 29, 2015 by jd440 (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted March 25, 2015 Share Posted March 25, 2015 Bonjour, En fait... Le cache est normalement "censé" est constitué comme suit, finalement: MaClasse::MaMethode_[iD_1]_ [iD_2] (si on a par exemple un cache sur deux entités). Prenons un exemple plus clair et rapide: Tools::saveCacheForProduct($id_product, $id_product_attribute) [cette méthode n'existe pas, bien entendu !]. Ici, on a deux entités (deux id's). De là, le cache_id peut devenir: Tools::saveCacheForProduct_1_2 si appelé par Tools::saveCacheForProduct(1, 2). Le cache sera distinct pour chaque entité (selon les paramètres variables). Il ne sera régénéré qu'au besoin, si changement dans le tpl par exemple. Sinon, c'est qu'il ne devait pas changer. N'est-ce pas ? Ce qui veut dire que le paramètre de date n'est pas opportun pour le cache, finalement. Vous êtes d'accord avec moi ? Link to comment Share on other sites More sharing options...
jd440 Posted March 26, 2015 Author Share Posted March 26, 2015 Merci pour votre réponse, mais malhereusement je ne suis pas forcément d'accord avec vous. Exemple j'ai un module qui affiche un flux d'info sur la fiche produit. Ce flux est mis en cache pour 1semaine. permettant de garder un perf respectable et ne pas refaire toute les requete /calcul à chaque affichage Cependant ne souhaitait pas que ce flux d'actu sois fixe, puisque c'est de l'actu, mais réacutalisé chaque semaine. Voici pourquoi j'ai mis en place ce systeme: Comprenez vous le systeme? Link to comment Share on other sites More sharing options...
J. Danse Posted March 26, 2015 Share Posted March 26, 2015 Ok, je vois. Dans ce cas, vous devez générer votre $cache_idpour correspondre à quelque chose de ce type: $cache_id= '$this->name.'|prod|'.(int)$params['product']->id.'|'.(date("W")-1)'; De là, vous pouvez faire un: $this->_clearCache('blockrssperso_product.tpl', $cache_id); Link to comment Share on other sites More sharing options...
jd440 Posted March 26, 2015 Author Share Posted March 26, 2015 Super. Merci je ne connaissais pas le clear cache function hookProductFooter($params) { $cache_id_perim= '$this->name.'|prod|'.(int)$params['product']->id.'|'.(date("W")-1)'; $this->_clearCache('blockrssperso_product.tpl', $cache_id_perim); $cacheId = $this->getCacheId($this->name.'|prod|'.(int)$params['product']->id.'|'.date("W")); if (!$this->isCached('blockrssperso_product.tpl', $cacheId)) { [...] } return $this->display(__FILE__, 'blockrssperso_product.tpl', $cacheId); } Link to comment Share on other sites More sharing options...
jd440 Posted October 29, 2015 Author Share Posted October 29, 2015 J'ai un souci avec ce système. Puisque si le template est bien caché, et le _clearcache supprime bien le fichier mais les dossiers reste. blockrssperso└prod └1320 └42 | └8 | └1 | └8 └42 | └8 | └1 | └8 └44 └8 └1 └8 └d4 └f8 └8f └d4f88fbe4c71adb85516a684a051ca45908e27b8.blockrssperso_product.tpl.php Du coup voyez vous un moyen de supprimer les dossiers autant que les fichiers sans devoir overrider le cache Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now