5 votes

Effacement du cache après le développement pour les visiteurs

Je développe des sites et les navigateurs de certains visiteurs apparaissent avec un vieux cache.

Existe-t-il un moyen de vider le cache du navigateur du visiteur en utilisant des codes du côté du serveur ou même du javascript afin qu'il n'ait pas à le vider lui-même ?

Je ne trouve pas de réponse directe à cette question.

Il doit y avoir un moyen pour les grandes entreprises de le faire, comme Facebook, Ebay, etc.

2voto

Salketer Points 2642

Nous avons utilisé htaccess pour déterminer les règles de mise en cache des clients. Nous donnons explicitement au cache une durée de vie de 24 heures et nous mettons des règles de non-cache la veille de la mise à jour. Cela a aidé mais c'est fastidieux et pas très fiable.

Je le poste juste pour vous donner des idées si personne ne répond, mais j'aimerais vraiment avoir la réponse aussi :)

1voto

Avinash Dubey Points 118

Première méthode :

Vous pouvez en fait enregistrer la sortie de la page avant de terminer le script, puis charger le cache au début du script.

exemple de code :

<?php

$cachefile = 'cache/'.basename($_SERVER['PHP_SELF']).'.cache'; // e.g. cache/index.php.cache
$cachetime = 3600; // time to cache in seconds

if(file_exists($cachefile) && time()-$cachetime <= filemtime($cachefile)){
  $c = @file_get_contents($cf);
  echo $c;
  exit;
}else{
  unlink($cachefile);
}

ob_start();

// all the coding goes here

$c = ob_get_contents();
file_put_contents($cachefile);

?>

Vous pouvez en fait enregistrer la sortie de la page avant de terminer le script, puis charger le cache au début du script.

exemple de code :

Si vous avez beaucoup de pages nécessitant cette mise en cache, vous pouvez le faire :

dans cachestart.php :

dans cacheend.php :

<?php

$c = ob_get_contents();
file_put_contents($cachefile);

?>

Ensuite, il suffit d'ajouter

include('cachestart.php') ; au début de vos scripts. et ajoutez

include('cacheend.php') ; à la fin de vos scripts. N'oubliez pas d'avoir un dossier nommé cache et d'autoriser PHP à y accéder.

Rappelez-vous également que si vous faites un cache de page complet, votre page ne doit pas avoir d'affichage spécifique à la SESSION (par exemple, afficher la barre des membres ou autre) car ils seront également mis en cache. Cherchez un framework pour la mise en cache spécifique (variable ou partie de la page).

Deuxième méthode :

Utilisez Squid ou mettez à jour les en-têtes HTTP correctement pour mettre en cache le navigateur.

PEAR possède un paquet de mise en cache (en fait deux) :

http://pear.php.net/package/Cache

Quatrième méthode :

Utilisez http://memcached.org/ . Il y a une explication sur la façon de procéder sur ce site.

1voto

Wolfgang Stengel Points 2105

J'utilise généralement une combinaison de techniques :

  • Le HTML résultant du code PHP n'est pas mis en cache avec la configuration standard, car il envoie automatiquement les en-têtes appropriés.
  • Les images et autres actifs binaires sont renommés s'ils changent.
  • Pour JavaScript et CSS, j'ajoute au nom du fichier un code unique créé automatiquement (par exemple, un hachage MD5 du contenu ou la taille du fichier). /public/styles.f782bed8.css ) et le supprimer à nouveau avec mod_rewrite. De cette façon, chaque modification du fichier entraîne un nouveau nom de fichier. Cette opération peut être effectuée au moment de l'exécution en PHP, lors de la sortie de l'en-tête HTML, afin de l'automatiser entièrement. Dans ce cas, cependant, un MD5 peut avoir un impact sur les performances.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X