Mam uruchomioną aplikację na hostgatorze. Po wprowadzeniu zmian w plikach js moi użytkownicy nie widzą zmian, dopóki nie wyczyści ich pamięci podręcznej. Czy jest to jedyna opcja do wprowadzenia zmian w mojej aplikacji? Zasadniczo mam wprowadzić zmiany, zaktualizować pliki, a następnie poprosić wszystkich użytkowników o wyczyszczenie ich pamięci podręcznej?Jak wyczyścić pamięć podręczną klientów przy następnym zalogowaniu
Odpowiedz
Musisz użyć wersjonowania na swoim pliku zawiera. Za każdym razem, gdy zmienisz URI pliku, przeglądarka nie znajdzie dopasowania do pamięci podręcznej i ponownie pobierze zawartość.
Na przykład:
<script type="text/javascript" src="include/232/init.js"></script>
gdzie 232 to numer wersji modyfikacji, które powinny zostać zmienione w dowolnym momencie zwolnić nowego kodu.
Alternatywnie, można użyć ciągi zapytań:
<script type="text/javascript" src="include/init.js?232"></script>
Chodzi o to, że należy zmienić plik obejmują URI w jakiś sposób, kiedy chcesz, aby odwiedzający ponownie pobrać plik.
Jeśli używasz PHP lub innego języka po stronie serwera, można skonfigurować ten wersjonowanie nastąpić automatycznie, gdy plik zawiera modyfikowane są: http://derek.io/blog/2009/auto-versioning-javascript-and-css-files/
Możesz dodać obojętne ciągi zapytań do adresu URL aktywów:
<link href="http://mysite.com/main.css?v=1" rel="stylesheet" />
Potem, kiedy tylko dokonywać żadnych zmian w CSS, po prostu podbić numer wersji. Ta technika nazywa się kradzież pamięci podręcznej. Search Google for that, a otrzymasz wiele różnych wersji.
Jeden trick, aby obejść ten problem jest do dołączania ciąg kwerendy z pewnego rodzaju wersji lub sygnatury czasowej do wywołań JavaScript link
. Na przykład:
<script src="myexternal.js?20130116" type="text/javascript"></script>
Ten przykład jest prosty, ale dowodzi tego. Zasadniczo oznacza to, że przeglądarka załaduje plik, jeśli nie rozpozna pełnej ścieżki. Za każdym razem, gdy zmieniasz plik javascript i chcesz, aby użytkownicy pobierali najnowszą wersję, po prostu zaktualizuj ten znacznik czasu lub wartość po znaku zapytania (ciąg zapytania).
Nie można wyczyścić pamięć podręczną przeglądarek swojego klienta, ale można użyć technik CacheBuster takich jak dodawanie wersjonowanie do plików
<link rel="stylesheet" href="/css/example.css?v1.0" type="text/css" />
A potem, kiedy dokonać zmiany
<link rel="stylesheet" href="/css/example.css?v1.1" type="text/css" />
Może to być znacznik czasu lub coś innego, po prostu musi być inny.
Prostą sztuczką, której czasami używam, jest dodanie do ścieżki pliku JavaScript/CSS niektórych nieprzyzwoitych parametrów. Przeglądarka zasadniczo zobaczy inny adres URL i nie będzie używać jego buforowanej wersji.
$jsFile = '/js/myFile.js'; // probably cached
$jsFile = '/js/myFile.js?r='.time(); // won't ever be cached
Naprawdę nie można wyczyścić pamięć podręczną dla klientów, ale może oszukać przeglądarkę klientów na myślenia, że jest to pierwszy raz, gdy widzi ten plik i będzie go pobrać ponownie.
Nie zapomnij wyłączyć tej opcji po uzyskaniu stabilnej wersji. Buforowanie plików to świetny sposób na przyspieszenie czasu ładowania aplikacji.
Podstęp, którego używam, aby uniknąć tego problemu, to zmodyfikować adres URL zaktualizowanego skryptu. Zmusi to klienta do ponownego pobrania skryptu, ponieważ nazwa zasobu ressource jest inna.
Najprostszy sposób: użyj numeru wersji na końcu adresu URL js/my-script.js?v=1.0
.
Lepszy sposób na to (100% obsługiwane dla wszystkich nawigatorów): zmień samą nazwę pliku js/my-script.v1.0.js
.
- 1. Jak wyczyścić pamięć podręczną Smarty'ego
- 2. Jak wyczyścić pamięć podręczną Androida
- 3. Jak wyczyścić pamięć podręczną md-autocomplete?
- 4. Jak wyczyścić pamięć podręczną Apache Maven?
- 5. Jak wyczyścić pamięć podręczną plików Rails?
- 6. jak wyczyścić pamięć podręczną w gwt?
- 7. Jak wyczyścić pamięć podręczną w przędzy?
- 8. Jak wyczyścić pamięć podręczną DNS klienta System.Net?
- 9. Jak wyczyścić pamięć podręczną WebView w Cocoa?
- 10. Jak wyczyścić pamięć podręczną pracownika serwisu?
- 11. Jak wyczyścić pamięć podręczną aplikacji w IE10?
- 12. Jak wyczyścić pamięć podręczną w Solr?
- 13. Jak wyczyścić pamięć podręczną w Eclipse Android Emulator
- 14. Jak wyczyścić pamięć podręczną CoreBluetooth w systemie MacOS?
- 15. Jak wyczyścić pamięć podręczną DNS w Firefoksie Quantum?
- 16. Jak mogę wyczyścić pamięć podręczną aplikacji dla systemu Android?
- 17. Jak wyczyścić pamięć podręczną za pomocą żądań Pythona?
- 18. Jak wyczyścić pamięć podręczną katalogu/inode na komputerze MacOSX
- 19. Jak ręcznie wyczyścić pamięć podręczną share share LinkedIn
- 20. Jak wyczyścić pamięć podręczną w określonym kontrolerze w asp mvc?
- 21. Jak automatycznie wyczyścić pamięć podręczną przeglądarki w Selenium WebDriver?
- 22. Jak programowo wyczyścić pamięć podręczną nazw Bluetooth w systemie Android?
- 23. jak programowo wyczyścić pamięć podręczną przeglądarki w jsp?
- 24. Jak programowo wyczyścić pamięć podręczną przeglądarki na iPhone'ie?
- 25. Wyczyść pamięć podręczną Magento
- 26. W jaki sposób wyczyścić pamięć podręczną strony w CodeIgniter
- 27. Jenkins wyłączyć lub wyczyścić pamięć podręczną dla maven buduje
- 28. PhantomJS przechowuje pamięć podręczną
- 29. gecko wyczyść pamięć podręczną historia i ciasteczka
- 30. Jak testować pamięć podręczną ETag?
Dlaczego pierwsza nie jest w 100% obsługiwana? – Ian
Wygląda na to, że dodajesz ciąg zapytania do zasobów statycznych [zapobiega buforowaniu w niektórych serwerach proxy] (http://www.mikebrittain.com/blog/2009/06/11/caching-urls-with-query-strings/). Chcemy być w stanie wyczyścić wersję pliku z pamięci podręcznej w pewnym momencie, nie zapobiegając całkowicie mechanizmowi buforowania. Jednakże, jeśli nie jesteś guru wydajności, pierwsze rozwiązanie jest świetne. To ta, która była używana do motywów Wordpress. –
Hmm bardzo interesujące, dzięki za udostępnienie linku. Chociaż nie sądzę, że Squid jest używany w przeglądarkach (tylko proxy, jak zauważyłeś). Więc byłoby miło móc "oszukać" buforowanie w każdym miejscu, dokładnie w tym czasie, w którym chcesz, ważne jest, aby oszukać przeglądarkę ... więc użycie ciągu zapytania nie powinno stanowić problemu. Chociaż osadzenie "wersji" w nazwie pliku i użycie reguły przepisywania jest dość sprytne ... Zajmę się tym z moich własnych rzeczy. – Ian