Reinoire imagine in browser dupa readaugare pe server

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
adrian_ady
Mesaje: 80

Reinoire imagine in browser dupa readaugare pe server

M-am lovit de aceasta problema:
In cazul unui anunt postat, userul respectiv poate adauga 2 imagini de referinta. Le poate sterge si incarca altele dar in acest caz trebuie golit cacheul browserului pentru a elimina imaginile memorate in acele pozitii(imaginile sunt chemate prin fancybox, miniaturile(small) se schimba dupa primul refresh al paginii insa imaginile big isi pastreaza vechile foto. Eu am specificat in pagina ca trebuie recurs la stergere cache dar banuiesc ca nu toti stiu ce sa faca deci ar fi mult mai bine ca la upload foto sa se rezolve automat acest inconvenient. Ce trebuie sa adaug in scriptul de upload?

Cod: Selectaţi tot

if(isset($_POST['Upload'])){
        if($_GET['addfoto']=='foto')
        $upload = new Upload();
        $upload->uploadImageThumbRenameResize('file',"".$cale_imagini,($total_imagini + 1),512000,800,135,array("jpeg"));  
        header('Location: '.$_SERVER['PHP_SELF']);
} 
$cale_imagini este:

Cod: Selectaţi tot

$cale_imagini = "foldere/anunturi/".$data_inregistrare."-".$login->getMemberId()."/id_".$_GET['id']; 
La chemare imagine in Fancybox:

Cod: Selectaţi tot

<?
     for($i = $first_foto; $i <= $total_fotos; $i++)
     {  
    echo '<a href="'.$cale.'/'. $i .'_big.jpg" rel="next'.$id.'"><img src="'.$cale.'/'. $i .'_small.jpg" width="135" alt="&nbsp; '. $i .' &nbsp;" title="Foto '.$tip_anunt.'" alt="" /></a>';
     }
?>

MarPlo Mesaje: 4343
Pentru inoirea imaginii incarcate in browser dupa upload, se adauga un "?query" aleator la adresa "src" a imaginii (src="image.png?h=numar_aleator").
Incearca acest cod la partea de chemare imagine in Fancybox:

Cod: Selectaţi tot

<?php
$hash_img = '?h='. time();
for($i = $first_foto; $i <= $total_fotos; $i++) {  
  echo '<a href="'.$cale.'/'. $i .'_big.jpg'. $hash_img .'" rel="next'.$id.'"><img src="'.$cale.'/'. $i .'_small.jpg'. $hash_img .'" width="135" alt="&nbsp; '. $i .' &nbsp;" title="Foto '.$tip_anunt.'" alt="" /></a>';
}
?>

adrian_ady Mesaje: 80
Am incercat, nu se schimba nimic, este lafel ca inainte. Uite ce am in .htaccess , poate nu e bine aici :

Cod: Selectaţi tot

Header set Cache-Control "max-age=172800, public, must-revalidate"

MarPlo Mesaje: 4343
Pune max-age=0 la partea de cod din .htaccess, sau /si in codul php unde afisezi imaginea adauga la inceput:

Cod: Selectaţi tot

header('Cache-Control: no-cache, no-store, must-revalidate');
// apoi afisare imagini ...  
- Testeaza aceste modificari dupa ce ai sters cache-ul la browser.

adrian_ady Mesaje: 80
Am pus '0' in .htaccess si merge. Nu-mi dau seama daca-mi va afecta faptul ca nu mai pastreaza nimic in cache dar... asta e!
Multumesc mult!

MarPlo Mesaje: 4343
Afecteaza doar traficul pe server, adica va incarca mereu pagina de pe server, nu o mai retine sa o preia din cache.

adrian_ady Mesaje: 80
Nu am avut liniste, de cum m-am trezit am reluat probele si am reusit. Practic trebuie inlocuit '#' cu '?=' adica

Cod: Selectaţi tot

$hash_img = '?='. time();

Subiecte similare