Jaki jest sens?
Istnieje już dobrze znana technika zwana buforowaniem po stronie klienta. Co przynosi lokalna pamięć HTML5 w tym przypadku, czego brakuje buforowania?
Możesz mieć jakąś dziwną aplikację, która musi dynamicznie ładować fragmenty kodu JavaScript, aby nie można było skutecznie korzystać z pamięci podręcznej, ale jest to niezwykle rzadki przypadek.
Pamiętaj też o innej rzeczy. Przeglądarki mają określone zasady dotyczące pamięci podręcznej, a większość przeglądarek dobrze radzi sobie z pamięcią podręczną (usuwając tylko starszą zawartość itp.). Wdrożenie domowej pamięci podręcznej uniemożliwia prawidłowe zarządzanie przeglądarkami. Nie tylko można go skrytykować samodzielnie, ale zaszkodzi ci też prędzej czy później. Przykład: gdy użytkownicy aplikacji sieciowej zgłaszają błędy, często odpowiadasz, prosząc ich o wyczyszczenie pamięci podręcznej. Nie jestem pewien, o co poprosisz w swoim przypadku, ponieważ wyczyszczenie pamięci podręcznej nigdy nie rozwiąże problemów z aplikacją internetową.
W odpowiedzi na twoją pierwszą edycję (druga edycja jest nie na temat):
Mam świadomość pamięci podręcznej przeglądarki, nadal będzie sprawdzanie dostępu do nagłówka
Wygląda na to, że nie rozumiesz buforowania przeglądarki. Dlatego ważne jest, aby zrozumieć, jak to działa, zanim zaczniesz wdrażać własny mechanizm buforowania . Odkryj własne koło tylko wtedy, gdy zrozumiesz wystarczająco dużo istniejących kół i masz dobry powód, aby ich nie używać. Zobacz punkt 1 mojej odpowiedzi na pytanie „Ponowne wynalezienie koła i NIE żałowanie” .
Udostępniając niektóre dane przez HTTP, możesz podać kilka nagłówków związanych z pamięcią podręczną:
Last-Modified
określa, kiedy treść została zmieniona,
Expires
określa, kiedy przeglądarka musi zapytać serwer, czy treść uległa zmianie .
Te dwa nagłówki umożliwiają przeglądarce:
- Unikaj pobierania zawartości raz po raz. Jeśli
Last-Modified
ustawiono na ostatni miesiąc, a treść została już dzisiaj pobrana kilka godzin wcześniej, nie trzeba jej ponownie pobierać.
- Unikaj zapytań o datę ostatniej modyfikacji pliku. Jeśli
Expires
podmiotu cache jest 5 maja th , 2014, nie trzeba wydawać ani żadnego żądania GET w 2011, ani w 2012 lub 2013 roku, ponieważ wiesz, że pamięć podręczna jest up-to-date.
Drugi jest niezbędny w przypadku CDN. Gdy Google udostępnia JQuery odwiedzającemu Stack Overflow lub cdn.sstatic.net
wyświetla obrazy lub arkusze stylów używane przez Stack Overflow, nie chcą, aby przeglądarki za każdym razem pytały o nową wersję. Zamiast tego serwują te pliki raz, ustawiają datę ważności na wystarczająco długo i to wszystko.
Oto na przykład zrzut ekranu z tego, co się dzieje, gdy wchodzę na stronę główną Stack Overflow:
Do obsłużenia jest 15 plików. Ale gdzie są te wszystkie 304 Not Modified
odpowiedzi? Masz tylko trzy żądania treści, które uległy zmianie. W pozostałych przypadkach przeglądarka korzysta z wersji buforowanej bez wysyłania żadnych żądań do dowolnego serwera .
Podsumowując, naprawdę musisz przemyśleć dwa razy przed wdrożeniem własnego mechanizmu pamięci podręcznej, a zwłaszcza znaleźć dobry scenariusz, w którym może to być przydatne . Jak powiedziałem na początku mojej odpowiedzi, mogę znaleźć tylko jedno: gdzie służysz kawałki JavaScript aby użyć ich przez, OMG, eval()
. Ale w tym przypadku jestem prawie pewien, że istnieją lepsze podejścia, które są albo:
- Bardziej efektywne przy użyciu standardowych technik pamięci podręcznej lub
- Łatwiejsze w utrzymaniu.