Rails - etags против кэширования страниц (файловый кеш)

StackOverflow https://stackoverflow.com/questions/832035

  •  06-07-2019
  •  | 
  •  

Вопрос

Какие преимущества использования etags / stale? / fresh_when? вместо кеширования страниц (в файловом кеше)?

Apache автоматически обрабатывает etags для статических файлов, но даже если это не так, кэширование страниц все равно будет лучше, поскольку приложение Rails даже не вызывается.

Итак, в каких случаях я бы использовал методы, предоставляемые Rails (stale? / fresh_when?)?

Это было полезно?

Решение

Они действительно бесплатны. Etags / fresh_when и т. Д. Помогают вам хорошо играть с нижестоящими кешами (такими как ваши собственные экземпляры Varnish / Squid или Rack :: Cache или кеш браузера или прокси-серверы ISP & # 8230;)

Кэширование страниц избавляет вас от попадания в стек рельсов полностью, потому что Apache / ваш веб-сервер обслуживают файл, поэтому поиск БД не производится. Но вы должны иметь дело с истечением срока действия кэша, чтобы сохранить его свежим.

Используя etags / условное получение, вы не экономите много времени на обработку, поскольку вам все еще нужно получить все записи, используемые на странице:

def show
  @article = Article.find(params[:id])
  @feature = Feature.current
  fresh_when :etag => [@article, @feature] 
end

в случае, если у пользователя есть текущая страница, это экономит ваше время рендеринга и полосу пропускания, необходимую для отправки вниз по странице.

Другие советы

Еще одно применение, которое пришло мне в голову, это то, что вы все еще можете обработать некоторую информацию, прежде чем позволить Rails раздать «304 Not Modified». заголовок. Например, если вы хотите записать хиты на страницу.

Одна вещь, которая приходит на ум, это то, что fresh_when все равно сохранит вам некоторую визуализацию, даже если вы очистили весь кэш страницы. Здесь вы будете использовать оба в тандеме.

Мне любопытны и другие ответы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top