2009-04-15 5 views
1

J'ai une application et pour que les images soient chargées dans l'application, j'ai dû utiliser un proxy. Donc les urls pour les images ne sont pas .jpg ils sont .php? Var = value Ils semblent charger beaucoup plus lentement même après avoir déjà chargé une fois, je ne sais pas vraiment comment ça marche, mais je pense que les images mandatées ne sont pas en cache. Ai-je raison?Les ressources proxy sont-elles mises en cache?

Merci.

Répondre

2

IE (et peut-être d'autres navigateurs) ne cache pas les URL avec une sorte de? Query = string & foo = bar if there are no caching headers in the response. Vous devez définir explicitement les en-têtes Cache-Control et Expires pour que ceux-ci soient mis en cache.


En PHP, la façon de définir les en-têtes est la suivante:

// can be cached by browser, and also by intermediate caches (i.e. by everybody) 
header('Cache-Control: public'); 

// is fresh (doesn't have to be re-checked) until that date 
header('Expires: Fri, 17 Apr 2009 23:50:00 GMT'); 

caveat: vous devez envoyer des en-têtes avant que le contenu, sauf si vous utilisez en mémoire tampon de sortie.

+0

Pouvez-vous s'il vous plaît me dire ou me diriger vers un endroit qui explique comment régler cela? Merci. –

0

Votre fichier PHP peut avoir déclaré un indicateur de non-cache, ou un délai d'expiration bas. Essayez d'ouvrir les deux URL dans un visualiseur qui affiche les en-têtes http complets.

Chaque proxy dispose de ses propres paramètres pour gérer la mise en cache et les différents types de fichiers. Un fichier JPG est souvent considéré comme un fichier statique, il est donc sûr de le mettre en cache. Les fichiers PHP sont cependant considérés comme des scripts dynamiques, qui produisent une sortie différente à chaque fois. Mais cela dépend complètement de la configuration de votre proxy.

+0

Eh bien, le proxy accepte les paramètres de type mime et les en-têtes, j'ai le type mime défini sur "image/jpeg" mais je ne sais pas quoi mettre pour les en-têtes donc je ne les ai pas définis. Savez-vous ce que je devrais mettre pour les en-têtes? Merci. –

+0

Nevermind après avoir étudié le script, il semble qu'il vérifie simplement si les en-têtes de paramètres == "true". Donc je suppose que je devrais définir ça? –

Questions connexes