310 lines
9.8 KiB
YAML
310 lines
9.8 KiB
YAML
name: HttpCache
|
|
class_comment: '# * Cache provides HTTP caching.
|
|
|
|
# *
|
|
|
|
# * @author Fabien Potencier <fabien@symfony.com>'
|
|
dependencies:
|
|
- name: Request
|
|
type: class
|
|
source: Symfony\Component\HttpFoundation\Request
|
|
- name: Response
|
|
type: class
|
|
source: Symfony\Component\HttpFoundation\Response
|
|
- name: HttpKernelInterface
|
|
type: class
|
|
source: Symfony\Component\HttpKernel\HttpKernelInterface
|
|
- name: TerminableInterface
|
|
type: class
|
|
source: Symfony\Component\HttpKernel\TerminableInterface
|
|
properties: []
|
|
methods:
|
|
- name: __construct
|
|
visibility: public
|
|
parameters:
|
|
- name: kernel
|
|
- name: store
|
|
- name: surrogate
|
|
default: 'null'
|
|
- name: options
|
|
default: '[]'
|
|
comment: "# * Cache provides HTTP caching.\n# *\n# * @author Fabien Potencier <fabien@symfony.com>\n\
|
|
# */\n# class HttpCache implements HttpKernelInterface, TerminableInterface\n\
|
|
# {\n# public const BODY_EVAL_BOUNDARY_LENGTH = 24;\n# \n# private Request $request;\n\
|
|
# private ?ResponseCacheStrategyInterface $surrogateCacheStrategy = null;\n# private\
|
|
\ array $options = [];\n# private array $traces = [];\n# \n# /**\n# * Constructor.\n\
|
|
# *\n# * The available options are:\n# *\n# * * debug If true,\
|
|
\ exceptions are thrown when things go wrong. Otherwise, the cache\n# * \
|
|
\ will try to carry on and deliver a meaningful response.\n\
|
|
# *\n# * * trace_level May be one of 'none', 'short' and 'full'.\
|
|
\ For 'short', a concise trace of the\n# * main request\
|
|
\ will be added as an HTTP header. 'full' will add traces for all\n# * \
|
|
\ requests (including ESI subrequests). (default: 'full' if\
|
|
\ in debug; 'none' otherwise)\n# *\n# * * trace_header Header name\
|
|
\ to use for traces. (default: X-Symfony-Cache)\n# *\n# * * default_ttl \
|
|
\ The number of seconds that a cache entry should be considered\n# * \
|
|
\ fresh when no explicit freshness information is provided\
|
|
\ in\n# * a response. Explicit Cache-Control or Expires\
|
|
\ headers\n# * override this value. (default: 0)\n\
|
|
# *\n# * * private_headers Set of request headers that trigger \"private\"\
|
|
\ cache-control behavior\n# * on responses that don't\
|
|
\ explicitly state whether the response is\n# * public\
|
|
\ or private via a Cache-Control directive. (default: Authorization and Cookie)\n\
|
|
# *\n# * * skip_response_headers Set of response headers that are never cached\
|
|
\ even if a response is cacheable (public).\n# * (default:\
|
|
\ Set-Cookie)\n# *\n# * * allow_reload Specifies whether the client\
|
|
\ can force a cache reload by including a\n# * Cache-Control\
|
|
\ \"no-cache\" directive in the request. Set it to ``true``\n# * \
|
|
\ for compliance with RFC 2616. (default: false)\n# *\n# * * allow_revalidate\
|
|
\ Specifies whether the client can force a cache revalidate by including\n\
|
|
# * a Cache-Control \"max-age=0\" directive in the\
|
|
\ request. Set it to ``true``\n# * for compliance with\
|
|
\ RFC 2616. (default: false)\n# *\n# * * stale_while_revalidate Specifies the\
|
|
\ default number of seconds (the granularity is the second as the\n# * \
|
|
\ Response TTL precision is a second) during which the cache\
|
|
\ can immediately return\n# * a stale response while\
|
|
\ it revalidates it in the background (default: 2).\n# * \
|
|
\ This setting is overridden by the stale-while-revalidate HTTP Cache-Control\n\
|
|
# * extension (see RFC 5861).\n# *\n# * * stale_if_error\
|
|
\ Specifies the default number of seconds (the granularity is the second)\
|
|
\ during which\n# * the cache can serve a stale response\
|
|
\ when an error is encountered (default: 60).\n# * \
|
|
\ This setting is overridden by the stale-if-error HTTP Cache-Control extension\n\
|
|
# * (see RFC 5861)."
|
|
- name: getStore
|
|
visibility: public
|
|
parameters: []
|
|
comment: '# * Gets the current store.'
|
|
- name: getTraces
|
|
visibility: public
|
|
parameters: []
|
|
comment: '# * Returns an array of events that took place during processing of the
|
|
last request.'
|
|
- name: addTraces
|
|
visibility: private
|
|
parameters:
|
|
- name: response
|
|
comment: null
|
|
- name: getLog
|
|
visibility: public
|
|
parameters: []
|
|
comment: '# * Returns a log message for the events of the last request processing.'
|
|
- name: getRequest
|
|
visibility: public
|
|
parameters: []
|
|
comment: '# * Gets the Request instance associated with the main request.'
|
|
- name: getKernel
|
|
visibility: public
|
|
parameters: []
|
|
comment: '# * Gets the Kernel instance.'
|
|
- name: getSurrogate
|
|
visibility: public
|
|
parameters: []
|
|
comment: '# * Gets the Surrogate instance.
|
|
|
|
# *
|
|
|
|
# * @throws \LogicException'
|
|
- name: handle
|
|
visibility: public
|
|
parameters:
|
|
- name: request
|
|
- name: type
|
|
default: HttpKernelInterface::MAIN_REQUEST
|
|
- name: catch
|
|
default: 'true'
|
|
comment: null
|
|
- name: terminate
|
|
visibility: public
|
|
parameters:
|
|
- name: request
|
|
- name: response
|
|
comment: null
|
|
- name: pass
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: catch
|
|
default: 'false'
|
|
comment: '# * Forwards the Request to the backend without storing the Response in
|
|
the cache.
|
|
|
|
# *
|
|
|
|
# * @param bool $catch Whether to process exceptions'
|
|
- name: invalidate
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: catch
|
|
default: 'false'
|
|
comment: '# * Invalidates non-safe methods (like POST, PUT, and DELETE).
|
|
|
|
# *
|
|
|
|
# * @param bool $catch Whether to process exceptions
|
|
|
|
# *
|
|
|
|
# * @throws \Exception
|
|
|
|
# *
|
|
|
|
# * @see RFC2616 13.10'
|
|
- name: lookup
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: catch
|
|
default: 'false'
|
|
comment: '# * Lookups a Response from the cache for the given Request.
|
|
|
|
# *
|
|
|
|
# * When a matching cache entry is found and is fresh, it uses it as the
|
|
|
|
# * response without forwarding any request to the backend. When a matching
|
|
|
|
# * cache entry is found but is stale, it attempts to "validate" the entry with
|
|
|
|
# * the backend using conditional GET. When no matching cache entry is found,
|
|
|
|
# * it triggers "miss" processing.
|
|
|
|
# *
|
|
|
|
# * @param bool $catch Whether to process exceptions
|
|
|
|
# *
|
|
|
|
# * @throws \Exception'
|
|
- name: validate
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: entry
|
|
- name: catch
|
|
default: 'false'
|
|
comment: '# * Validates that a cache entry is fresh.
|
|
|
|
# *
|
|
|
|
# * The original request is used as a template for a conditional
|
|
|
|
# * GET request with the backend.
|
|
|
|
# *
|
|
|
|
# * @param bool $catch Whether to process exceptions'
|
|
- name: fetch
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: catch
|
|
default: 'false'
|
|
comment: '# * Unconditionally fetches a fresh response from the backend and
|
|
|
|
# * stores it in the cache if is cacheable.
|
|
|
|
# *
|
|
|
|
# * @param bool $catch Whether to process exceptions'
|
|
- name: forward
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: catch
|
|
default: 'false'
|
|
- name: entry
|
|
default: 'null'
|
|
comment: '# * Forwards the Request to the backend and returns the Response.
|
|
|
|
# *
|
|
|
|
# * All backend requests (cache passes, fetches, cache validations)
|
|
|
|
# * run through this method.
|
|
|
|
# *
|
|
|
|
# * @param bool $catch Whether to catch exceptions or not
|
|
|
|
# * @param Response|null $entry A Response instance (the stale entry if present,
|
|
null otherwise)'
|
|
- name: isFreshEnough
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: entry
|
|
comment: '# * Checks whether the cache entry is "fresh enough" to satisfy the Request.'
|
|
- name: lock
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: entry
|
|
comment: '# * Locks a Request during the call to the backend.
|
|
|
|
# *
|
|
|
|
# * @return bool true if the cache entry can be returned even if it is staled,
|
|
false otherwise'
|
|
- name: store
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: response
|
|
comment: '# * Writes the Response to the cache.
|
|
|
|
# *
|
|
|
|
# * @throws \Exception'
|
|
- name: restoreResponseBody
|
|
visibility: private
|
|
parameters:
|
|
- name: request
|
|
- name: response
|
|
comment: '# * Restores the Response body.'
|
|
- name: processResponseBody
|
|
visibility: protected
|
|
parameters:
|
|
- name: request
|
|
- name: response
|
|
comment: null
|
|
- name: isPrivateRequest
|
|
visibility: private
|
|
parameters:
|
|
- name: request
|
|
comment: '# * Checks if the Request includes authorization or other sensitive information
|
|
|
|
# * that should cause the Response to be considered private by default.'
|
|
- name: record
|
|
visibility: private
|
|
parameters:
|
|
- name: request
|
|
- name: event
|
|
comment: '# * Records that an event took place.'
|
|
- name: getTraceKey
|
|
visibility: private
|
|
parameters:
|
|
- name: request
|
|
comment: '# * Calculates the key we use in the "trace" array for a given request.'
|
|
- name: mayServeStaleWhileRevalidate
|
|
visibility: private
|
|
parameters:
|
|
- name: entry
|
|
comment: '# * Checks whether the given (cached) response may be served as "stale"
|
|
when a revalidation
|
|
|
|
# * is currently in progress.'
|
|
- name: waitForLock
|
|
visibility: private
|
|
parameters:
|
|
- name: request
|
|
comment: '# * Waits for the store to release a locked entry.'
|
|
traits:
|
|
- Symfony\Component\HttpFoundation\Request
|
|
- Symfony\Component\HttpFoundation\Response
|
|
- Symfony\Component\HttpKernel\HttpKernelInterface
|
|
- Symfony\Component\HttpKernel\TerminableInterface
|
|
interfaces:
|
|
- HttpKernelInterface
|