Spec-Zone.ru › Ruby on Rails 8.1

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

Константы

DATE
DEFAULT_CACHE_CONTROL
IMMUTABLE
LAST_MODIFIED
MUST_REVALIDATE
MUST_UNDERSTAND
NO_CACHE
NO_STORE
PRIVATE
PUBLIC
SPECIAL_KEYS

Атрибуты

cache_control [R]

Открытые методы экземпляра

date () Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 193
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 203
def date=(utc_time)
  set_header DATE, utc_time.httpdate
end
date? () Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 199
def date?
  has_header? DATE
end
etag= (weak_validators) Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 225
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 237
def etag?; etag; end
last_modified () Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 179
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 189
def last_modified=(utc_time)
  set_header LAST_MODIFIED, utc_time.httpdate
end
last_modified? () Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 185
def last_modified?
  has_header? LAST_MODIFIED
end
strong_etag= (strong_validators) Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 233
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 246
def strong_etag?
  etag? && !weak_etag?
end

Истина, если задан ETag и он не является слабым валидатором (перед ним не стоит W/).

weak_etag= (weak_validators) Показать исходный код
# File actionpack/lib/action_dispatch/http/cache.rb, line 229
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 240
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