Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-04-2012 09:26:36

istrion
Membre
Date d'inscription: 10-06-2011
Messages: 10

Mise en cache d'url ? ou Réécriture ?

Bonjours , je vais aller droit au but smile

j'ai des images que je charge en appelant un service ( qui me renvoi un flux )
Pour appeler ce service l'url de l'image est  :

<img src="moncontroller/monservice/imageid/10" />

par exemple ...

Le navigateur ne met JAMAIS en cache cette url et donc le cache que je génère coté serveur ne sert pas a grand chose ...

Question il y a t-il moyen de réécrire l'url par exemeple  :

<img src="moncontroller/monservice/imageid-10.jpg" />

??

merci à tous smile

Hors ligne

 

#2 06-04-2012 10:39:51

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Mise en cache d'url ? ou Réécriture ?

Personnellement plutôt que de modifier mon url, je regarderais plutôt du côté des entêtes http et notamment des entêtes Expires et Cache-Control.

Hors ligne

 

#3 10-04-2012 09:03:22

istrion
Membre
Date d'inscription: 10-06-2011
Messages: 10

Re: Mise en cache d'url ? ou Réécriture ?

J'ai déja essayé en renvoyant un entête 304 ( non modifié ) et le flux , tout ceci est bien récupéré par le navigateur , mais avec un point d’arrêt je me rend compte que mon controller / action est toujours appelé malgrès ça et non mis en cache dans le navigateur ....

Hors ligne

 

#4 10-04-2012 09:33:56

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Mise en cache d'url ? ou Réécriture ?

Je pensais plutôt aux entêtes lors de la première génération de l'image pour éviter justement les nouveaux appels. Si tu indiques dans Expires que ton image n'expire jamais (date expire dans 1 an par exemple), alors si l'image est présente dans le cache du navigateur alors il ne la demandera plus au serveur.

Hors ligne

 

#5 10-04-2012 11:09:40

istrion
Membre
Date d'inscription: 10-06-2011
Messages: 10

Re: Mise en cache d'url ? ou Réécriture ?

justement l'url de mon image étant : <img src="moncontroller/monservice/imageid/10" /> et non un fichier directement , quelque soit l'entête que je renvois , le controller est toujours appelé sad

Hors ligne

 

#6 10-04-2012 15:33:16

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Mise en cache d'url ? ou Réécriture ?

C'est justement dans le controlleur que tu dois modifier les entêtes avec un code du genre :

Code:

[lang=php]
$this->getResponse()->setHeader('Expires', 'Tue, 01 Jan 2013 00:00:00 GMT');
$this->getResponse()->setHeader('Cache', 'no-cache');

Hors ligne

 

#7 17-04-2012 04:55:29

chuying0810
Membre
Date d'inscription: 17-04-2012
Messages: 15

Re: Mise en cache d'url ? ou Réécriture ?

action est toujours appelé malgrès ça et non mis en cache dans le navigateur .... http://www.bosin.info/google.gif

Hors ligne

 

#8 17-04-2012 09:06:02

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Re: Mise en cache d'url ? ou Réécriture ?

J'ai trouvé une solution simpliste de mettre en cache des ressources.

Sur mon site d'alerte LeBonCoin, on peut créer des flux RSS. Mais, pour éviter les abus, je met en cache les flux pendant 20 minutes.

Avec Zend Framework, tu dois avoir un htaccess où tu as :

Code:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [NC,L]

RewriteRule .* index.php [NC,L]

Ces règles permettent de ne pas rediriger les fichiers physique vers index.php.

Mes flux sont de la forme : /feed/refresh/id/ff335ab42043d3b4d1a25727de0ca11234567890.rss
J'ai donc créé dans mon répertoire public (où se trouve index.php) l'arbre suivant : feed/refresh/id

Quand le navigateur demande le fichier RSS, il va être redirigé la première fois vers mon controller Feed et l'action refresh. Je génère à ce moment le cache dans feed/refresh/id.
À la seconde requête, la redirection ne se fait pas puisque qu'il y a le fichier physique dans feed/refresh/id.

Ensuite, une simple tache cron permet de supprimer les fichiers vieux de plus de 20 minutes.

Et le tour est joué wink

Dernière modification par Blount (17-04-2012 09:08:26)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages