Jump to content

vider la cache périmé


Recommended Posts

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 by jd440 (see edit history)
Link to comment
Share on other sites

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

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.

  1. permettant de garder un perf respectable et ne pas refaire toute les requete /calcul à chaque affichage
  2. 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

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

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

  • 7 months later...

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...