[ pisac @ 30.03.2016. 22:34 ] @
Kako ubediti browser da sliku povlači iz keša (ako je ima)?

Napravio sam prostu php skriptu koja šalje sliku iz baze.
Ništa posebno, poziva se sa pic.php?id=..., suština je u:
Code:

        header('Content-Type: image/jpeg');
        echo $data['pic'];

Ova slika se prikazuje u naslovu svake strane na sajtu.

Međutim, koliko vidim, svaki put kada prelazim na novu stranu ova slika se učitava ponovo sa servera.
Ima li caka da ubedim browser da 1) sačuva sliku u kešu, 2) proveri prvo svoj keš?
[ plus_minus @ 31.03.2016. 00:59 ] @
Uz pomoć .htaccess fajla ... ?

Code:

<IfModule mod_headers.c>
Header unset ETag
FileETag None

<filesMatch "\.(gif|GIF|jpg|JPG|jpeg|JPEG|png|PNG|swf|ico|cur)$">
ExpiresDefault A3600
Header append Cache-Control "public"
</filesMatch>

</IfModule>


# ExpiresDefault A3600 === 3600 sekundi === 1 sat

Dakle, ako hoćeš duže od jednog sata, izračunaš 60 * 60 * 24 * 7 (604800 sekundi ili nedelju dana) i promeniš ExpiresDefault u A604800

A ako nećeš preko .htaccess-a, onda bi ovo trebalo da radi..

Code (php):


$thatMuch = (60 * 60 * 24);
$cacheTime = (time() + $thatMuch);

header_remove('X-Powered-By');
header_remove('ETag');
header('Pragma: public');
header('Cache-Control: maxage='.$thatMuch);
header('Expires: ' . gmdate('D, d M Y H:i:s', $cacheTime) . ' GMT');
header('Image-Content-Origin: pisac');
header('Content-Type: image/jpeg');

 


$thatMuch - isto se računa kao i za .htaccess.

header('Image-Content-Origin: pisac'); - ovo možeš da makneš, zajebancija. (a i ne moraš)

Na tebi je sada da nađeš štos kako da pre nego što pošalješ headere, promeniš $thatMuch u 0..
Bilo bi sasvim dovoljno.

[Ovu poruku je menjao plus_minus dana 31.03.2016. u 02:12 GMT+1]
[ Aleksandar Đokić @ 31.03.2016. 16:29 ] @
To se obicno podesava i u konfiguraciji samog web servera, pa i ako ti ne stavis svakako se hederi dodaju.