Oto bardzo prosty przykład do zilustrowania moje pytanie użyciu JQuery z CDN aby zmodyfikować stronę:Dlaczego przeglądarka nie ładuje pliku cdn z pamięci podręcznej?
<html>
<body>
<p>Hello Dean!</p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>$("p").html("Hello, Gabe!")</script>
</body>
</html>
Podczas ładowania strony z dostępem do Internetu, wyświetlania strony „Hello Gabe”. Kiedy następnie wyłączam połączenie internetowe, na stronie wyświetla się komunikat "Hello Dean" z błędem - JQuery nie jest dostępny.
Rozumiem, że CDN mają długą odpowiedź Cache-Control
i Expire
w nagłówku, co rozumiem, że przeglądarka buforuje plik lokalnie.
$ curl -s -D - https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js | head
HTTP/1.1 200 OK
Server: cloudflare-nginx
Date: Fri, 17 Apr 2015 16:30:33 GMT
Content-Type: application/javascript
Transfer-Encoding: chunked
Connection: keep-alive
Last-Modified: Thu, 18 Dec 2014 17:00:38 GMT
Expires: Wed, 06 Apr 2016 16:30:33 GMT
Cache-Control: public, max-age=30672000
Ale tak się nie dzieje. Czy ktoś może wyjaśnić, co się dzieje? Ponadto - w jaki sposób można uzyskać przeglądarkę, aby użyć kopii JQuery w pamięci podręcznej gdzieś?
To pytanie pojawiło się, ponieważ chcemy używać CDN do obsługi bibliotek zewnętrznych, ale chcemy też móc rozwijać stronę w trybie offline - jak w samolocie.
Podobne zachowanie występuje w Chrome i Firefox.
Właśnie zaczynam zaglądać w ten problem, ale czy znalazłeś http://stackoverflow.com/q/5264783/2336725? – Teepeemm
Zobacz, czy plik jest rzeczywiście zapisany w pamięci podręcznej w systemie na chrome w pasku adresu typu "about: cache". –