Mam duże ciało doświadczenia w pracy z pamięć podręczną aplikacji wspieranych aplikacji obsługiwanych przez stos Rails .
Znalazłem najłatwiejszą rzecz zdecydowanie jest nie hardcode swoją wersję do AppCache. Powinieneś generować plik dynamicznie i programowo generować unikalną wartość dla wersji. Najlepiej byłoby, gdyby nikt nie wprowadzał zmian w samych manifestach, powinny one wprowadzać zmiany w danych wejściowych, które programowo generują plik.
To naprawdę nie jest unikalne dla AppCache. Jeśli zauważysz, że jedna konkretna linia musi zostać zmodyfikowana praktycznie przy każdym zatwierdzeniu, prawdopodobnie nie powinieneś sztywno kodować tej linii. Powinien być generowany w jakiś sposób, w oparciu o wszelkie zmiany w repo, zachęcam do zmiany tej linii.
Wracając do pamięć podręczną aplikacji, Znalazłem najłatwiejszą rzeczą do zrobienia jest:
- w rozwoju, obejmuje czas ostatniej modyfikacji wszystkich plików w pamięć podręczną aplikacji
- w produkcji, obejmują commit ID wdrożonego atrybutu Git
Nie mam pojęcia, jakiego języka używasz, ale w świecie Rails mój manifest AppCache wyglądał jak poniżej. Nikt nigdy nie trzeba zmieniać tego pliku, to oni tylko dodać lub usunąć pliki z tablicy @files
, który jest zarządzany w kontrolerze, który służy tę manifeście:
CACHE MANIFEST
<% if Rails.env.development? %>
<% @cached_files.each do |file| %>
# <%= File.mtime(file) %>
<% end %>
<% else %>
# <%= `git rev-parse HEAD` %>
<% end %>
CACHE:
<% @cached_files.each do |file| %>
<%= file %>
<% end %>
NETWORK:
*
części pierwszej, owinięte w Rails.env.development?
wyprowadza serię linii komentarza, zawierającej czas ostatniej modyfikacji każdego pliku zawartego w manifeście. Oznacza to, że podczas programowania, AppCache będzie automatycznie wygasał, gdy tylko którykolwiek z plików zawartych w nim zostanie zmodyfikowany.
Podczas produkcji AppCache wygasł po wdrożeniu nowego zatwierdzenia. To może być dla ciebie przesada; jeśli chcesz uniknąć niepotrzebnego wygaśnięcia AppCache swoich użytkowników, powinieneś zrobić coś bardziej sprytnego, jak mieszanie odpowiednich plików, aby pamięć podręczna wygasała po zmianie ich zawartości.
W końcu skończyłem pisać małą bibliotekę, aby pomóc wyeliminować powtarzające się fragmenty manifestów generujących. Na off szansa używasz szyny, może okazać się pomocne: https://github.com/meagar/rails_appcache
Pytanie jest ogólne i powinno być również ogólne. Ale dla informacji: w moim przypadku aplikacja używa tylko statycznych plików JavaScript, CSS i HTML, więc wystarczy bardzo prosty serwer WWW. Niektóre opcjonalne części używają PHP - ale nie jest to trudne wymaganie dla środowiska wykonawczego (ale domyślam się, że 100% dostępnych serwerów programistycznych go posiada). Jeśli istnieje rozwiązanie, w którym Git powinien wywoływać skrypt, należy wziąć pod uwagę, że programiści używają systemów Linux, Windows i MacOS. – Chris