Ruby on Rails 5.2 - ActionDispatch::Http::Cache::Response

मॉड्यूल ActionDispatch :: Http :: कैश :: प्रतिक्रिया




ruby

मॉड्यूल ActionDispatch :: Http :: कैश :: प्रतिक्रिया

स्थिरांक

दिनांक
DEFAULT_CACHE_CONTROL
अंतिम बार संशोधित
MUST_REVALIDATE
NO_CACHE
निजी
जनता
SPECIAL_KEYS

गुण

कैश_कंट्रोल [R]

सार्वजनिक प्रवृत्ति के तरीके

# File actionpack/lib/action_dispatch/http/cache.rb, line 68
def date
  if date_header = get_header(DATE)
    Time.httpdate(date_header)
  end
end
# File actionpack/lib/action_dispatch/http/cache.rb, line 78
def date=(utc_time)
  set_header DATE, utc_time.httpdate
end
# File actionpack/lib/action_dispatch/http/cache.rb, line 74
def date?
  has_header? DATE
end
etag = (weak_validators) स्रोत दिखाएं
# File actionpack/lib/action_dispatch/http/cache.rb, line 101
def etag=(weak_validators)
  self.weak_etag = weak_validators
end

यह विधि प्रतिक्रिया पर एक कमजोर ETag सत्यापनकर्ता सेट करती है, इसलिए ब्राउज़र और परदे के पीछे प्रतिक्रिया को कैश कर सकते हैं, ETag पर कुंजीबद्ध। बाद के अनुरोधों पर, यदि कोई नहीं-मैच हेडर कैश्ड ETag के लिए सेट है। यदि यह वर्तमान ETag से मेल खाता है, तो हम बिना किसी बॉडी के साथ 304 Not Modified प्रतिक्रिया दे सकते हैं, जिससे ब्राउज़र या प्रॉक्सी को पता चल सकता है कि उनका कैश चालू है। अनुरोध समय और नेटवर्क बैंडविड्थ में बड़ी बचत।

कमजोर ईटैग को शब्दार्थ के समान माना जाता है, लेकिन बाइट के लिए बाइट समान नहीं है। यह HTML पृष्ठों के ब्राउज़र कैशिंग के लिए एकदम सही है, जहां हम सटीक समानता के बारे में परवाह नहीं करते हैं, बस उपयोगकर्ता जो देख रहा है।

मजबूत ETags बाइट के लिए समान माना जाता है। वे एक ब्राउज़र या प्रॉक्सी कैश को Range अनुरोधों का समर्थन करने के लिए अनुमति देते हैं, पीडीएफ फाइल के माध्यम से पेजिंग या वीडियो के माध्यम से स्क्रबिंग के लिए उपयोगी है। कुछ CDN केवल मजबूत ETags का समर्थन करते हैं और पूरी तरह से कमजोर ETags की उपेक्षा करेंगे।

कमजोर ETags हम हमेशा की जरूरत है, तो वे डिफ़ॉल्ट हैं। एक मजबूत ETag सत्यापनकर्ता प्रदान करने के लिए strong_etag= देखें।

# File actionpack/lib/action_dispatch/http/cache.rb, line 113
def etag?; etag; end
# File actionpack/lib/action_dispatch/http/cache.rb, line 54
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 64
def last_modified=(utc_time)
  set_header LAST_MODIFIED, utc_time.httpdate
end
अंतिम बार संशोधित? () स्रोत दिखाएं
# File actionpack/lib/action_dispatch/http/cache.rb, line 60
def last_modified?
  has_header? LAST_MODIFIED
end
strong_etag = (strong_validators) स्रोत दिखाएं
# File actionpack/lib/action_dispatch/http/cache.rb, line 109
def strong_etag=(strong_validators)
  set_header "ETag", generate_strong_etag(strong_validators)
end
# File actionpack/lib/action_dispatch/http/cache.rb, line 121
def strong_etag?
  etag? && !weak_etag?
end

यदि कोई ETag सेट है तो यह सही है और यह एक कमजोर सत्यापनकर्ता नहीं है (W / के साथ पूर्ववर्ती नहीं है)

weak_etag = (weak_validators) स्रोत दिखाएं
# File actionpack/lib/action_dispatch/http/cache.rb, line 105
def weak_etag=(weak_validators)
  set_header "ETag", generate_weak_etag(weak_validators)
end
# File actionpack/lib/action_dispatch/http/cache.rb, line 116
def weak_etag?
  etag? && etag.starts_with?('W/"')
end

यदि कोई ETag सेट है तो यह सही है और यह एक कमजोर सत्यापनकर्ता है (पूर्व / W के साथ)