La semaine dernière, j'ai converti mes valeurs de src de la page img en pointant sur des fichiers image en utilisant un script PHP pour servir les images. La raison principale était de prendre en charge à la fois les fichiers et les BLOB de base de données en tant que source réelle.Image SRC à partir du script PHP sur IIS - ne pas afficher de manière cohérente
Maintenant, quand un utilisateur va à une page, parfois des images montrent et parfois non. Si ce n'est pas le cas, et que la page est actualisée \ reloaded, l'image apparaît. Lorsque les images n'apparaissent pas, il s'agit parfois d'une image à laquelle l'utilisateur a déjà accédé auparavant.
Je suis perplexe.
Voici la balise img:
<img src="../somedir/image_script.php?i=1234">
Le fichier image_script.php où les chiffres pour obtenir l'image à partir, puis termine avec:
header("Content-type: image/jpeg");
if($from_db){
print $image_blob;
} else {
$im = imagecreatefromjpeg($image_file);
imagejpeg($im,null,100);
imagedestroy($im)
}
J'utilise PHP 5.2.8 sur IIS 6 en utilisant FastCGI. Il n'y a pas d'en-tête de cache sur le fichier image_script.php ni sur le répertoire dans lequel il se trouve. Actuellement, 99,9% des images sont basées sur des fichiers, donc je ne sais pas s'il y a une différence de résultat entre les images basées sur les fichiers. . Quand je vais directement à image_script.php dans mon navigateur, il renvoie l'image demandée (i = ????) 100% du temps.
a> Une idée de la raison pour laquelle le hit and miss avec les images affichées? et,
b> quelle serait la bonne façon de réellement mettre en cache les images servies par le script PHP? (Ils sont très statiques)
- Scott
Matt, Excellente suggestion sur le readfile. J'étais tellement concentré sur l'ajout de la partie blob de la base de données que je me suis précipité la partie du fichier. Fonctionne très bien dans le test - J'ai besoin de le faire sur le serveur de production pour voir s'il résout le problème principal. – menkes
Cool. J'espère que ça va aider; Si j'ai raison de manquer de mémoire de temps en temps, il devrait, comme le fichier readfile sera beaucoup moins gourmand en mémoire, ainsi que d'être plus léger sur le CPU. –