Ponieważ Rails 4 usunął buforowanie stron i buforowanie akcji, zastanawiam się, w jaki sposób Rails 4 buforuje akcję, która nie ma zmiennych i ma tylko html w widoku? Czy powinienem fragmentować pamięć podręczną statycznego html w widoku? Jak ustawić etag/fresh_when, gdy nie ma modelu, aby wygasł z eterem? Staram się znaleźć przykład lub konwencję do buforowania najłatwiejszej strony do buforowania.Buforowanie/Etag dla akcji statycznych w Railsach 4
Jedna uwaga jest taka, że podczas gdy widok jest całkowicie statyczny, strona nadal ma dynamiczny pasek nawigacyjny w zależności od tego, czy użytkownik jest zalogowany, czy nie. Jak poradziłbyś sobie z taką statyczną stroną, bez odwoływania się do buforowania akcji, skoro został usunięty, a konwencja została ustawiona, aby nie używać wersji z klejnotem?
Przykład:
class HomesController < ApplicationController
def index
end
end
domy/index.html.erb
<div>A bunch of normal html tags with no erb</div>
Edit: podstawie odpowiedzi użytkownika @ severin i moich własnych badań, o to co mam wymyślić jak dotąd.
class HomesController < ApplicationController
def index
fresh_when(["some-identifier", current_user, flash])
end
end
Ponadto używam https://github.com/n8/bust_rails_etags aby zresetować wszystkie Etags po wdrożeniu ponieważ widok mogły ulec zmianie między wdraża. Wydaje mi się, że ten etag jest dość dobry, chociaż nadal jestem ciekawy, czy jest on nowy, gdy automatycznie będzie zawierał jakiś identyfikator dotyczący widoku i czy "jakiś idiotyfikator" jest konieczny? Czy to będzie problem, że czasami current_user i flash będą zerowe?
Teraz drugi punkt buforowania fragmentów statycznej treści. Zakładam, że gdybym to zrobił:
cache "v1" do
all my html
end
będę musiał pamiętać, aby zawsze zmienić identyfikator cache, gdy strona zostanie zmieniona inaczej moja aplikacja będzie służyć nieświeży treści. W jaki sposób można to zautomatyzować lub jest już obsługiwany przez szyny? Byłoby miło po prostu zachować pamięć podręczną przy ostatnim uaktualnieniu widoku lub coś sprytnego, więc nie muszę śledzić, kiedy zmieni się moja statyczna zawartość.
Odpowiedziałem na drugą część pytania w mojej odpowiedzi. Jeśli cokolwiek jest niejasne lub masz dodatkowe pytania, nie wahaj się zapytać ich :) – severin