Chcę znaleźć minimalny zestaw nagłówków, który będzie działał ze „wszystkimi” pamięciami podręcznymi i przeglądarkami (także przy korzystaniu z protokołu HTTPS !)
W mojej witrynie internetowej będę mieć trzy rodzaje zasobów:
(1) Pamięć podręczna na zawsze (publiczna / równa dla wszystkich użytkowników)
Przykład: 0A470E87CC58EE133616F402B5DDFE1C.cache.html ( automatycznie generowany przez GWT )
Pliki te automatycznie otrzymują nową nazwę, gdy zmieniają zawartość (na podstawie MD5).
Powinny być buforowane jak najwięcej, nawet przy korzystaniu z HTTPS (więc zakładam, że powinienem ustawić
Cache-Control: public
, szczególnie dla Firefoksa?)Nie powinny wymagać, aby klient odbył podróż w obie strony do serwera w celu sprawdzenia, czy zawartość uległa zmianie.
(2) Okazjonalne zmiany (publiczne / równe dla wszystkich użytkowników)
Przykłady: index.html, mymodule.nocache.js
Te pliki zmieniają swoją zawartość bez zmiany adresu URL, gdy wdrażana jest nowa wersja witryny.
Można je przechowywać w pamięci podręcznej, ale prawdopodobnie za każdym razem wymagają one podróży w obie strony, aby ponownie je zweryfikować.
(3) Indywidualne dla każdego wniosku (prywatne / specyficzne dla użytkownika)
Przykład: odpowiedzi JSON
- Zasoby te nigdy nie powinny być buforowane w postaci niezaszyfrowanej na dysku pod żadnym pozorem. (Może z wyjątkiem kilku konkretnych żądań, które można będzie przechowywać w pamięci podręcznej).
Mam ogólny pomysł, których nagłówków prawdopodobnie użyłbym dla każdego typu, ale zawsze jest coś, czego mogę przegapić.
źródło
Odpowiedzi:
Prawdopodobnie użyłbym tych ustawień:
Cache-Control: max-age=31556926
- Reprezentacje mogą być przechowywane w dowolnej pamięci podręcznej. Reprezentację zapisaną w pamięci podręcznej należy uważać za świeżą przez 1 rok:Cache-Control: no-cache
- Reprezentacje mogą być buforowane przez dowolną pamięć podręczną. Ale pamięci podręczne muszą przesłać żądanie do serwera pochodzenia w celu weryfikacji przed zwolnieniem kopii z pamięci podręcznej.Cache-Control: no-store
- Pamięci podręczne nie mogą buforować reprezentacji w żadnych warunkach.Więcej informacji można znaleźć w samouczku Marka Nottinghama dotyczącym buforowania .
źródło
Przypadki pierwszy i drugi to w rzeczywistości ten sam scenariusz. Należy ustawić,
Cache-Control: public
a następnie wygenerować adres URL zawierający numer kompilacji / wersję witryny, aby mieć niezmienne zasoby, które potencjalnie mogą trwać wiecznie. Chcesz także ustawićExpires
nagłówek rok lub więcej w przyszłości, aby klient nie musiał wystawiać kontroli świeżości.W przypadku 3 dla maksymalnej elastyczności możesz wykonać wszystkie poniższe czynności:
źródło
https://www.example.com/
c) Chcę, aby zakładki zawsze odnosiły się do najnowszej wersji mojej witryny (wyobraź sobie, że zakładki do pytania o przepływie stosu zawierałyby numer kompilacji witryny).