css et cache

Je vous explique mon problème (pas simple).

Sur la page d'accueil du site de mon profil y'a une photo tirée aléatoirement de la base et redimensionnée via php.
J'affiche cette image en background par css et je place dessus un gif transparent (ce qui donne le cadre arrondi).

Un lien sur cette image dirige vers la page dont elle est issue.

mon code est donc le suivant

Dans ma page :
Code:
<?php
... (génération de l'image image.png)
?>
<a href="dest.php"><img src="cache.gif" id="image_aléatoire"></a>

CSS :
Code:
image_aleatoire {
background: url(image.php);
}

image.php
Code:
<?php
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache");
header("Content-type: image/png");
readfile("image.png");
?>


Ca ne marche pas : l'image est mise en cache (alors qu'il n'y a pas de problème si j'appelle image.php dans ma page)

Est ce que les url du .css sont automatiquement mises en cache ???

Comment contourner le pb ??

merci
 
Merci mais je ne comprends pas grand chose. :?

Je sais ne pas mettre en cache un fichier, mais ça ne marche visiblement pas lorsque l'url vient d'une css ....
 
Ah pardon je n'avais pas vu que tu avais un CSS externe.
Bien sur il est mis en cache c'est le but. Mais je pense que ton problème ne vient pas du cache du CSS mais de l'HTML.
Et si tu met
Code:
image_aleatoire {
background: url(image.php);
}
dans la page HTML et non pas dans la feuille de style CSS séparée avec une belle entête
Code:
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
?
 
milkiway a dit:
Bien sur il est mis en cache c'est le but.

Tu parles de quoi là ?
du fichier css (evidement)
ou du fichier photo.php ??

Je viens de passer le style dans ma page...et ça marche pas.
Incompréhensible.
 
Et avec

<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

?
 
Le problème semble résolu ... et je ne sais pas pourquoi :evil:

J'avais du merder qq part, ma solution de base marche.

M'enfin merci a tous.
 
Mais affreux doute : tu génères ton .png à chaque affichage de page ou tu ne fais que le sélectionner au hasard ? Ca n'a rien à voir avec ton soucis mais si c'est la première soluce c'est le genre de choses qui font plier un serveur en un rien de temps ^^
 
Je le génère à chaque affichage de la home.
C'est si violent que ça ??
Je viens de calculer, ça met entre 0.5 et 1 secondes.
 
Oui c'est très très lourd je n'ai pas osé te le dire mais franchement c'est lourd, plutôt que de générer une image pourquoi ne pas faire une balise <img> avec un href dynamique ?
 
milkiway a dit:
... pourquoi ne pas faire une balise <img> avec un href dynamique ?

Parce qu'il faudrait avoir toutes les vignettes dans la base.
Mais si vous me le conseillez, je vais faire comme ça..
 
oui juste un nom et mm pas dans une base
tu listes les noms de fichiers des photos
tu fais un rand
et tu le met dans la balise image
 
Evidement que la vignette n'est pas dans la base :roll:
Je me suis mal exprimé..

Les vignette doivent être sur le serveur, ça veut dire de la place en plus (par rapport aux grandes photos c'est pas beaucoup, mais je voulais l'eviter pour un simple affichage en page d'accueil).
 
Bon, résumons : Pourquoi est ce que je vais "tuer mon serveur" ?
ça tourne comme ça depuis 1 an et j'ai pas de pbs ...
 
bsr,
pourquoi ne pas faire appel aux images d'un repertoire aléatoirement ?
moi j'utilise ce code:

Code:
<?php
// repertoire contenant les images
define('IMAGE_DIR' , './im/intro/');

$handle = opendir(IMAGE_DIR);
while($file = readdir($handle)) {
    if($file != '.' && $file != '..' && preg_match('`\.(gif|jpe?g|png)$`i', $file))
    $im2[] = $file;
}
closedir($handle);
echo '<a href="splash.php"><img src="' . IMAGE_DIR . $im2[rand(0, count($im2)-1)] . '"/></a>';
?>

peut-etre que cela peut t'aider ?...
 
Alors je pense qu'il faut les créer....
Une petite page php va te les convertir en vignette une fois pour de bon et hop, après tu as juste à faire appel à ces vignettes (base ou pas base)
Je pense que ça mettra bcp moins de temps qu'une seconde ! !
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut