Spec-Zone.ru › Ruby on Rails 7.2

модуль ActionDispatch::Http::Cache::Response

Константы

DATE
DEFAULT_CACHE_CONTROL
LAST_MODIFIED
MUST_REVALIDATE
НЕ КЭШИРОВАТЬ
НЕ ХРАНИТЬ
PRIVATE
PUBLIC
СПЕЦИАЛЬНЫЕ КЛЮЧИ

Атрибуты

cache_control[R]

Публичные методы экземпляров

date() Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 70
def date
  if date_header = get_header(DATE)
    Time.httpdate(date_header)
  end
end
date=(utc_time) Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 80
def date=(utc_time)
  set_header DATE, utc_time.httpdate
end
date?() Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 76
def date?
  has_header? DATE
end
etag=(weak_validators) Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 102
def etag=(weak_validators)
  self.weak_etag = weak_validators
end

Этот метод устанавливает слабый валидатор ETag для ответа, чтобы браузеры и прокси-серверы могли кэшировать ответ, используя ETag в качестве ключа. При последующих запросах заголовок If-None-Match устанавливается на кэшированный ETag. Если он совпадает с текущим ETag, мы можем вернуть ответ 304 Not Modified без тела, сообщая браузеру или прокси-серверу, что их кэш актуальный. Значительно экономится время запроса и сетевой трафик.

Слабые ETag считаются семантически эквивалентными, но не байт-в-байт идентичными. Это идеально подходит для кэширования браузером HTML-страниц, где нам не важна точная идентичность, а лишь то, что отображается пользователю.

Сильные ETag считаются байт-в-байт идентичными. Они позволяют кэшу браузера или прокси-сервера поддерживать Range запросы, что полезно для пролистывания PDF-файла или воспроизведения видео. Некоторые CDN поддерживают только сильные ETag и полностью игнорируют слабые.

Слабые ETag — это то, что нам почти всегда нужно, поэтому они являются значением по умолчанию. Посмотрите

strong_etag= для установки сильного валидатора ETag.

etag?() Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 114
def etag?; etag; end
last_modified() Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 56
def last_modified
  if last = get_header(LAST_MODIFIED)
    Time.httpdate(last)
  end
end
last_modified=(utc_time) Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 66
def last_modified=(utc_time)
  set_header LAST_MODIFIED, utc_time.httpdate
end
last_modified?() Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 62
def last_modified?
  has_header? LAST_MODIFIED
end
strong_etag=(strong_validators) Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 110
def strong_etag=(strong_validators)
  set_header "ETag", generate_strong_etag(strong_validators)
end
strong_etag?() Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 123
def strong_etag?
  etag? && !weak_etag?
end

Истина, если установлен ETag, и это не слабый валидатор (не начинается с W/).

weak_etag=(weak_validators) Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 106
def weak_etag=(weak_validators)
  set_header "ETag", generate_weak_etag(weak_validators)
end
weak_etag?() Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 117
def weak_etag?
  etag? && etag.start_with?('W/"')
end

Истина, если установлен ETag, и это слабый валидатор (начинается с W/).

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API