Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [caching] PHP headers dla obrazka
CzarnyGsm
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 2
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


Witam,

Mam problem, aby przeglądarka cache'owała mi obrazek, które znajduje się pod adresem adresik.pl/obrazek/id/243/icon.png i w rzeczywistości jest generowany z pobranej wcześniej wartości binarnej.
Obrazek się wyświetla, ale po każdym odświeżeniu obrazek jest ładowany od nowa przez przeglądarkę. W firebug'u w zakładce 'Sieć' cały czas mam odpowiedź 200 i 'no cache'. Próbowałem dodawać w php dla tego adresu nagłówki z cachowaniem i nic. Reszta obrazków, które są ładowane na stronie, ale są docelowo na serwerze są cache'owane przez przeglądarkę.
Mógłby ktoś doradzić? Jakie konkretne nagłówki mam dać aby zadziałało cache'owanie w tym przypadku?

Z góry dziękuję za pomoc.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
bigZbig
post
Post #2





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Po pierwsze zadaj sobie pytanie czy problem z buforowaniem dotyczy tylko tego jednego obrazka?. Po drugie upewnij się, czy ręczne odświeżanie w twojej przeglądarce przypadkowo nie resetuje zawsze cache-a. Wywoływanie na nowo tego samego adresu to nie to samo co ręczne odświerzenie strony.

Zauważ, że buforowanie jest opcją domyślną więc jeśli coś nie jest cache-owane to zwykle jest to wymuszane ręcznie lub stosownymi nagłówkami takimi jak:

  1. header("Pragma: no-cache");
  2. header("Cache-Control: max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
  3. header("Expires: 0");


lub też metatagami

  1. <meta http-equiv="Expires" content="0" />
  2. <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
  3. <meta http-equiv="Cache-Control" content="post-check=0, pre-check=0" />
  4. <meta http-equiv="Pragma" content="no-cache" />


Dodatkowo do sterowania cache-m przeglądarki służą nagłówki ETag.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
MatKus
post
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 3
Dołączył: 27.08.2008

Ostrzeżenie: (0%)
-----


W teorii oprócz informacji o rodzaju pliku powinno wystarczyć coś takiego:
  1. header("Cache-Control: no-cache, must-revalidate");
  2. header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // lub dowolna inna data z przeszłości.


Z doświadczenia jednak wiem, że wszelkie nagłówki są tylko podpowiedziami dla przeglądarki, które ta czasem olewa. Szczególnie często miewałem tu problem z chromem (który moim zdaniem obecnie jest bardziej wkurzającą przeglądarką, niż IE). Chrome niezależnie, jakie by nagłówki dostał, to i tak wiedział lepiej, czego ja chcę i mi cache'ował obrazki i javascripty.

Jedynym rozwiązaniem, jakie znam i uważam za skuteczne jest generowanie za każdym razem innego adresu, np.
<img src="adresik.pl/obrazek/id/243/icon.png?rand=1248293481247"> albo <img src="adresik.pl/obrazek/id/243/1248293481247/icon.png">
przy czym ten ciąg po ?rand= jest oczywiście losowany za każdym razem.

To drugie rozwiązanie jest moim zdaniem lepsze, bo to pierwsze np. fora lubią blokować, a i niektóre skrypty JS sobie z tym nie radzą, bo np. rozszerzenie pliku widzą wtedy jako ".png?rand=1248293481247" i np. nie chcą z tego zrobić galerii.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:59