2010-02-23 17 views
8

Mam starą wersję pliku JS zapisaną w pamięci podręcznej przeglądarek użytkowników, z datą wygaśnięcia wynoszącą 10 lat (od tego czasu nauczyłem się poprawnie ustawiać nagłówki expires na moim serwerze sieciowym). Dokonałem aktualizacji pliku JS i chcę, aby moi użytkownicy mogli z nich korzystać.Wymuszenie wygaśnięcia pamięci podręcznej z pliku JavaScript

  • Czy istnieje sposób, w jaki mój serwer sieciowy może wymusić przeglądarkom użytkowników wyczyszczenie pamięci podręcznej dla tego pliku, bez udostępniania pliku JS o innej nazwie?
  • W przyszłości, jeśli wygasną nagłówki, nie zostaną ustawione prawidłowo (paranoja), czy mój plik JS automatycznie wygaśnie i zmusi do przeładowania po, powiedzmy, dniu minęło od momentu jego buforowania?

EDIT: Idealnie chcę rozwiązać ten problem bez zmianę znaczników HTML na stronie znajduje się serwer skrypt.

+0

Ładne pytanie :) – Layke

Odpowiedz

18

W skrócie ... nie.

Możesz dodać coś na końcu adresu źródłowego znacznika skryptu. Przeglądarki traktują to jako inny plik niż ten, który mają w pamięci podręcznej.

<script src="/js/something.js?version=2"></script> 

Not sure about your other options.

+0

Wadą tego podejścia jest to, że zmusza mnie to do zmiany znaczników. Niektóre inne strony już wdrożyły mój skrypt i nie znoszę poprosić ich o zmianę kodu. –

+2

Zysk przez napisanie posta na temat konfesyjnego blogu o niebezpieczeństwach związanych z podejmowaniem decyzji o buforowaniu treści. Zrobię to dla ciebie. – Pointy

1

Można dodać obojętne parametr do adresów URL

<script src='oldscriptname.js?foo=bar'></script> 

[e: F; b]

Głównym problemem jest to, że jeśli ustawisz wygasanie przy użyciu prostego nagłówka "Wygasa", to przeglądarki, które mają buforowany plik, nawet nie będą się z tobą kontaktować. Nawet jeśli istnieje sposób, aby skrypt uderzył w przeglądarkę w głowę i wyczyścił pamięć podręczną, stary skrypt nie robi tego, więc nie masz możliwości udostępnienia tej funkcji klientom.

5

w HTML5 można użyć Application Cache, w ten sposób można kontrolować, kiedy bufor powinien wygasać

Trzeba dodać ścieżkę do oczywistego

<!DOCTYPE HTML><html manifest="demo.appcache">

W pliku demo.appcache możesz po prostu umieścić każdy plik, który chcesz przechowywać w pamięci podręcznej:

CACHE MANIFEST 
# 2013-01-01 v1.0.0 
/myjsfile.js 

Gdy chcesz, aby przeglądarka pobierała nowy plik Można zaktualizować oczywistego

CACHE MANIFEST 
# 2013-02-01 v1.0.1 
/myjsfile.js 

prostu należy zmodyfikować pamięć podręczną oczywisty z datą opublikowania lub wersji (lub coś innego), że sposób, gdy przeglądarka widzi, że manifest ma zmienić go pobierze wszystkie pliki w nim.

Jeśli manifest nie ulega zmianie, przeglądarka nie zaktualizuje pliku lokalnego, nawet jeśli plik ten został zmodyfikowany na serwerze.

W celu uzyskania dalszych informacji proszę spojrzeć na HTML5 Application Cache

0

można wymusić, aby przeładować się cacheated dokument na javascript:

window.location.reload(true); 

Prawdziwa komenda wskazuje przeglądarka musi przeładować stronę bez pamięci podręcznej.

Powiązane problemy