Chciałbym dodać łańcuch zapytania na końcu ścieżki do javascript, tak aby za każdym razem, gdy moja aplikacja jest aktualizowana do nowej wersji, pobierany jest javascript. Tak długo, jak ciąg zapytania jest taki sam, chcę, aby nadal używać wersji buforowanej bez wykonywania żądania http, aby sprawdzić, czy skrypt się zmienił.Czy Firefox buforuje javascript i używa go bez żądania, jeśli w ścieżce znajduje się zapytanie?
Sposób, w jaki robię to w PHP, to odczytanie z tagu CVS. Kiedy buduję HTML do wyjścia, czytałem tag CVS i używać, aby dołączyć do końca javascript ścieżki tak, że tworzy tagu skrypt, który wygląda tak:
<script src="javascript/messages/shipments.js?TPRSAPPS-DEV2_090828145712237-BRANCH" type="text/javascript"></script>
Dopóki aplikacji nie uległo zmianie, tag pozostanie niezmieniony, dlatego też ciąg zapytania będzie również taki sam. Przeglądarka powinna buforować JS, a nie żądać w ogóle sieci, ponieważ data wygaśnięcia jest o wiele większa. Za każdym razem, gdy aplikacja jest aktualizowana, ciąg zapytania zmienia się, a przeglądarka powinna go pobrać.
Działa to świetnie w IE8. Mój problem dotyczy przeglądarki Firefox. Firefox buforuje pliki, ale przy następnym ładowaniu strony Firebug pokazuje odpowiedź 304, wskazując, że nadal wykonała żądanie sieciowe dla pliku, a następnie stwierdziła, że nie została zmieniona.
Moje pytanie brzmi, czy Firefox ignoruje nagłówek wygasania i pamięć podręczną javascript, gdy istnieje ciąg zapytania?
Powiązane: what does firefox decide not to cache? Wygląda na to, że szyny mają coś podobnego. Ale to nie odpowiada na moje pytanie.
Oto odpowiedź wracam do tego pliku:
https://appdev.prsx.net/~jhargett/PRSApps-Motorlog/javascript/menuReader.js?TPRSAPPS-DEV2_090828145712237-BRANCH-DIFFERENT
HTTP/1.1 304 Not Modified
Date: Mon, 03 Oct 2011 18:35:26 GMT
Server: Apache/2.2.3 (Red Hat)
Connection: close
Etag: "179010-3f8-49a9a74334200"
Vary: Accept-Encoding
Zakładka Cache w Firebug mówi:
Last Modified Mon Oct 03 2011 13:35:26 GMT-0500 (Central Daylight Time)
Last Fetched Mon Oct 03 2011 13:35:26 GMT-0500 (Central Daylight Time)
Expires Fri Oct 28 2011 18:33:31 GMT-0500 (Central Daylight Time)
Data Size 345
Fetch Count 12
Device disk
Co nagłówki odpowiedzi HTTP wygląda? To jest tutaj ważne. – Pointy
Wykonanie 304 jest normalne. Firefox wyśle żądanie GET dla każdego zasobu na stronie co najmniej raz, z nagłówkiem "if-modified-since". Od serwera zależy odpowiedź na nową treść (200) lub niezmodyfikowaną 304. –
Jeśli nagłówek wygasa, jest znacznie bardziej przyszłościowy, powinien w ogóle wykonać żądanie. –