-
1. Data: 2010-05-31 13:57:31
Temat: Pytanie o cache przeglądarek
Od: Marek <b...@e...com>
Witam,
W jaki sposób przenoszą się ustawienia cache wysyłane w nagłówkach przez
serwer dla strony HTML na linki w postaci JS i CSS? Czy są one traktowane
jako niezależne pliki pobierane GETem?
Jeśli tak, to czy da się w jakiś sposób spowodować np. w htaccess aby nie
były one każdorazowo pobierane gdy przełączamy się między stronami jednego
serwisu?
-
2. Data: 2010-05-31 14:16:40
Temat: Re: Pytanie o cache przeglądarek
Od: Peter May <p...@o...pl>
W dniu 2010-05-31 15:57, Marek pisze:
> Witam,
>
> W jaki sposób przenoszą się ustawienia cache wysyłane w nagłówkach przez
> serwer dla strony HTML na linki w postaci JS i CSS? Czy są one traktowane
> jako niezależne pliki pobierane GETem?
>
> Jeśli tak, to czy da się w jakiś sposób spowodować np. w htaccess aby nie
> były one każdorazowo pobierane gdy przełączamy się między stronami jednego
> serwisu?
Dość ciekawa lektura:
http://www.mnot.net/cache_docs/
--
Peter
-
3. Data: 2010-05-31 16:02:31
Temat: Re: Pytanie o cache przeglądarek
Od: porneL <n...@p...net>
On Mon, 31 May 2010 14:57:31 +0100, Marek <b...@e...com> wrote:
> W jaki sposób przenoszą się ustawienia cache wysyłane w nagłówkach przez
> serwer dla strony HTML na linki w postaci JS i CSS? Czy są one traktowane
> jako niezależne pliki pobierane GETem?
Są niezależne. Cache nigdy nie przenosi się między plikami. HTTP nawet nie
wie o istnieniu HTML i ma go gdzieś.
> Jeśli tak, to czy da się w jakiś sposób spowodować np. w htaccess aby nie
> były one każdorazowo pobierane gdy przełączamy się między stronami
> jednego serwisu?
Normalnie Apache zapewnia cache'owalność statycznych plików. Możesz użyć
mod_expires, żeby wydłużyć żywotność plików w cache.
--
http://pornel.net
this.author = new Geek("porneL");
-
4. Data: 2010-05-31 18:49:09
Temat: Re: Pytanie o cache przeglądarek
Od: Marek <b...@e...com>
Dnia Mon, 31 May 2010 17:02:31 +0100, porneL napisał(a):
> Normalnie Apache zapewnia cache'owalność statycznych plików.
Coś mnie tknęło i zbadałem w jakimś swoim serwisie jak ładują się JS i CSS
- zawsze status 200. Stwierdziłem więc, że coś jest nie tak jak sądziłem,
ze powinno być. Krążąc po stronach wewnetrznych serwisu za każdym razem od
nowa pobierane są te same skrypty.
> Możesz użyć
> mod_expires, żeby wydłużyć żywotność plików w cache.
Rozważałem użycie tego modułu. Jednakże lepszym rozwiązaniem byłoby
zmuszenie przeglądarki do cacheowania danej strony do czasu gdy plik się
zmieni (data modyfikacji pliku) lub przynajmniej na czas jednej sesji
przeglądarki. Przypuszczam, że dostawca hostingu nakręca w ten sposób
transfer serwera, który jest potem rozliczany i być może trzeba poprosić o
włączenie jakiegoś "standardowego" mechanizmu?
mod_expires jeśli dobrze wnioskuję - pozwala jedynie na regulowanie czasu
cach'eowania - niezależnie czy plik się zmienił czy nie w trakcie trwania
tego czasu. Czy dobrze myślę? Jeśli tak jest, to jest to trochę protezą niż
rozwiązaniem - ostatecznie zastosuję je.
-
5. Data: 2010-05-31 18:50:14
Temat: Re: Pytanie o cache przeglądarek
Od: Marek <b...@e...com>
Dnia Mon, 31 May 2010 16:16:40 +0200, Peter May napisał(a):
> Dość ciekawa lektura:
> http://www.mnot.net/cache_docs/
Dziękuję :-) Bardzo przydatne kompendium.
-
6. Data: 2010-06-01 11:32:50
Temat: Re: Pytanie o cache przeglądarek
Od: Marek <b...@e...com>
Dnia Mon, 31 May 2010 20:49:09 +0200, Marek napisał(a):
>> Możesz użyć
>> mod_expires, żeby wydłużyć żywotność plików w cache.
Stop! Starą dokumentację czytałem. Już znalazłem odpowiedć :)
-
7. Data: 2010-06-01 12:48:31
Temat: Re: Pytanie o cache przeglądarek
Od: Marek <b...@e...com>
Dnia Mon, 31 May 2010 17:02:31 +0100, porneL napisał(a):
W międzyczasie zrodziło mi się jeszcze jedno pytanie. Mam stronę
dynamicznie generowaną: newsy z obrazkami. Za każdym razem strona ładuje mi
się ze statusem 200 i tak ma być. Obrazki również są dynamiczne i z nimi
jest problem gdyż, wydaje mi się, że są nadgorliwie cache'owane albo
browser mi prawdy nie mówi. Badam to w Firebugu. Otóż obrazki mają wysyłane
headery:
header('HTTP/1.1 200 OK');
header("Etag: \"".$fileInfo["Etag"]."\"");
header("Content-Type: ".$fileInfo["file_mime"]);
header("Last-Modified: ".$fileInfo["Date"]." GMT");
header("Content-Length: ".ob_get_length());
(to fragment kodu PHP).
Przy wejściu na daną stronę nawet po uprzednim zamknięciu przeglądarki
browser w ogóle nie sprawdza czy są na serwerze nowe wersje tych obrazków.
Ładuje je z cache. Co robię źle?
-
8. Data: 2010-06-01 13:03:05
Temat: Re: Pytanie o cache przeglądarek
Od: Colin <c...@c...tk>
On 2010.06.01 14:48, Marek wrote:
> header('HTTP/1.1 200 OK');
> header("Etag: \"".$fileInfo["Etag"]."\"");
> header("Content-Type: ".$fileInfo["file_mime"]);
> header("Last-Modified: ".$fileInfo["Date"]." GMT");
> header("Content-Length: ".ob_get_length());
>
> (to fragment kodu PHP).
>
> Przy wejściu na daną stronę nawet po uprzednim zamknięciu przeglądarki
> browser w ogóle nie sprawdza czy są na serwerze nowe wersje tych obrazków.
> Ładuje je z cache. Co robię źle?
Jeżeli nie ma Expires, to przeglądarki ustawiają jakąś prawdopodobną
datę zmiany dokumentu, np. aktualna data + 20% różnicy między Date a
Last-Modified, ale nie więcej niż 24h. Każda przeglądarka ma inny algorytm.
-
9. Data: 2010-06-01 14:00:14
Temat: Re: Pytanie o cache przeglądarek
Od: Marek <b...@e...com>
Dnia Tue, 01 Jun 2010 15:03:05 +0200, Colin napisał(a):
> Jeżeli nie ma Expires, to przeglądarki ustawiają jakąś prawdopodobną
> datę zmiany dokumentu, np. aktualna data + 20% różnicy między Date a
> Last-Modified, ale nie więcej niż 24h. Każda przeglądarka ma inny algorytm.
Czy nie da się zlecić CMS'owi decydowania o tym czy dany obrazek wygasł czy
nie? Expires nie załatwia sprawy gdyż trudno jest przewidzieć czy redaktor
serwisu zmieni jutro obrazek czy za rok. Optymalną formą komunikacji byłoby
zmuszenie przeglądarki do odpytania się czy jest coś nowego a w zależności
od tego serwer zwracałby albo kod 200 albo 304.
-
10. Data: 2010-06-01 16:21:15
Temat: Re: Pytanie o cache przeglądarek
Od: Colin <c...@c...tk>
On 2010.06.01 16:00, Marek wrote:
> Czy nie da się zlecić CMS'owi decydowania o tym czy dany obrazek wygasł czy
> nie? Expires nie załatwia sprawy gdyż trudno jest przewidzieć czy redaktor
> serwisu zmieni jutro obrazek czy za rok.
Last-Modified - data modyfikacji
Expires np. Thu, 01 Jan 1970 00:00:00 GMT (Cache-Control: max-age=0, ale
różne proxy nie obsługują)
i obsługa odpowiedzi 304 na żądanie z If-Modified-Since.
> Optymalną formą komunikacji byłoby zmuszenie przeglądarki do
> odpytania się czy jest coś nowego a w zależności od tego serwer
> zwracałby albo kod 200 albo 304.
Optymalne byłoby umieszczanie numerów wersji w nazwach plików.