# module ActionDispatch::Http::Cache::Request

### Constants

HTTP_IF_MODIFIED_SINCE
HTTP_IF_NONE_MATCH

### Public Instance Methods

etag_matches?(etag) click to toggle source

    # File lib/action_dispatch/http/cache.rb, line 25
    def etag_matches?(etag)
      if_none_match && if_none_match == etag
    end

fresh?(response) click to toggle source

Check response freshness (Last-Modified and ETag) against request If-Modified-Since and If-None-Match conditions. If both headers are supplied, both must match, or the request is not considered fresh.

    # File lib/action_dispatch/http/cache.rb, line 32
    def fresh?(response)
      last_modified = if_modified_since
      etag          = if_none_match

      return false unless last_modified || etag

      success = true
      success &&= not_modified?(response.last_modified) if last_modified
      success &&= etag_matches?(response.etag) if etag
      success
    end

if_modified_since() click to toggle source

    # File lib/action_dispatch/http/cache.rb, line 11
    def if_modified_since
      if since = env[HTTP_IF_MODIFIED_SINCE]
        Time.rfc2822(since) rescue nil
      end
    end

if_none_match() click to toggle source

    # File lib/action_dispatch/http/cache.rb, line 17
    def if_none_match
      env[HTTP_IF_NONE_MATCH]
    end

not_modified?(modified_at) click to toggle source

    # File lib/action_dispatch/http/cache.rb, line 21
    def not_modified?(modified_at)
      if_modified_since && modified_at && if_modified_since >= modified_at
    end