Temat: Problem z cachowaniem CSS

Witam,

Od pewnego czasu w sajcie postawionym na typolight zaobserwowałem dziwne zjawisko z plikami css. Przykładowo zmieniam css(dodaj dwie nowe linie) i wgrywam go na serwer. Początkowo wszystko jest ok ale gdy wchodzę na sajt, np po tygodniu, to dodane zmiany w css znikają. Gdy ściągam plik z serwera okazuje się, że jest stara wersja css-a bez wprowadzonych zmian. Macie może jakiś pomysł co może być przyczyną takiego zjawiska. Domyślam się, że chodzi tu o cachowanie ale nie wiem jak sobie z tym poradzić.

Za wszelkie sugestie z góry dziękuję.
Daniel Częstki

Daniel Częstki senior php developer

Temat: Problem z cachowaniem CSS

yyy - wgrywasz plik css na serwer ?
Sebastian Grodzicki

Sebastian Grodzicki Engineering Manager
@ Google

Temat: Problem z cachowaniem CSS

Adam Barański:
Domyślam się, że chodzi tu o cachowanie ale nie wiem jak sobie z tym poradzić.

Jeśli serwer, na którym są CSS-y, wysyła nagłówek "Expires" i/lub "Cache-Control", to przeglądarka nie będzie ponownie odpytywała serwer o plik o takiej samej nazwie przez czas określony we wspomnianych nagłówkach.

Pozostaje Ci więc albo nie wysyłać takich nagłówków i wtedy przeglądarka za każdym razem będzie pytała serwer o zmiany (w przypadku braku zmian serwer prześle sam nagłówek "304 Not Modified") albo zmienić nazwę pliku i odwołania do niego (np. poprzez wersjonowanie).
Marcin Fliszta

Marcin Fliszta Scrum Master

Temat: Problem z cachowaniem CSS

Przy wersjonowaniu można też skorzystać z parametrów GET. Wystarczy dodawać plik CSS w następujący sposób (podobnie można robić np. JavaScript):

<link rel="stylesheet" href="style.css?v=201102281931" />

Gdzie v jest znacznikiem wersji. Dzięki temu przeglądarka nie wczyta pliku z cache.
Sebastian Grodzicki

Sebastian Grodzicki Engineering Manager
@ Google

Temat: Problem z cachowaniem CSS

Marcin Fliszta:
Przy wersjonowaniu można też skorzystać z parametrów GET. Wystarczy dodawać plik CSS w następujący sposób (podobnie można robić np. JavaScript):

<link rel="stylesheet" href="style.css?v=201102281931" />

Gdzie v jest znacznikiem wersji. Dzięki temu przeglądarka nie wczyta pliku z cache.

Specyfikacja RFC 2616 dopuszcza niestety wyjątki:

We note one exception to this rule: since some applications have traditionally used GETs and HEADs with query URLs (those containing a "?" in the rel_path part) to perform operations with significant side effects, caches MUST NOT treat responses to such URIs as fresh unless the server provides an explicit expiration time. This specifically means that responses from HTTP/1.0 servers for such URIs SHOULD NOT be taken from a cache. See section 9.1.1 for related information.

konto usunięte

Temat: Problem z cachowaniem CSS

Autor chyba mówi o czymś innym niż cache przeglądarki. Z tego co ja rozumiem plik CSS jest uploadowany a potem ściągany z FTPa. Nie jest to problem nagłówków HTTP ani w ogóle tego protokułu. Czy mam Marcinie rację?

Problem przypomina mi po prostu nieumiejętne wgrywanie backupu i nadpisywanie twojego pliku starymi. Czy twój hosting, ewentualnie twój własny serwer ma jakieś mechanizmy auto backupu? Albo zgrywania plików strony bezpośrednio z systemu kontroli wersji?

Temat: Problem z cachowaniem CSS

Przede wszystkim dziękuję wszystkim za rady.

Autor chyba mówi o czymś innym niż cache przeglądarki. Z tego co ja rozumiem plik CSS jest uploadowany a potem ściągany z FTPa. Nie jest to problem nagłówków HTTP ani w ogóle tego protokułu. Czy mam Marcinie rację?

Karolu,

masz rację, nie chodziło mi raczej o nagłówki HTTP. Być może nieco nierozważnie użyłem słowa cachowanie. Tak jak piszesz prawidłowe css-y są uploadowane na serwer. Po uploadzie style się zmieniają i załóżmy (podaję przykładowo) kolor tła na sajcie zmienia się z zielonego na czerwony. Gdy po jakimś dłuższym czasie wchodzę na sajt okazuje się że tło znów jest zielone. Sprawdzam wtedy pliki css które znajdują się na serwerze i okazuje się, że nie ma w nich żadnych zmian które wprowadziłem. Tak jakby serwer przywrócił wersję tych plików sprzed x dni. Z żadnymi innymi plikami(np .php) takie zjawisko nie występuje.
Problem przypomina mi po prostu nieumiejętne wgrywanie backupu i nadpisywanie twojego pliku starymi. Czy twój hosting, ewentualnie twój własny serwer ma jakieś mechanizmy auto backupu? Albo zgrywania plików strony bezpośrednio z systemu kontroli wersji?

Sajt stoi na serwerach home.pl. Dzisiaj napiszę jeszcze do nich czy może wiedzą co jest przyczyną takiego zjawiska.

Następna dyskusja:

Problem z menu lista w css




Wyślij zaproszenie do