Page Speed Optimization Libraries
1.7.30.4
|
#include "cache_url_async_fetcher.h"
Classes | |
class | AsyncOpHooks |
Public Member Functions | |
CacheUrlAsyncFetcher (const Hasher *lock_hasher, NamedLockManager *lock_manager, HTTPCache *cache, const GoogleString &fragment, AsyncOpHooks *async_op_hooks, UrlAsyncFetcher *fetcher) | |
None of these are owned by CacheUrlAsyncFetcher. | |
virtual bool | SupportsHttps () const |
virtual void | Fetch (const GoogleString &url, MessageHandler *message_handler, AsyncFetch *base_fetch) |
HTTPCache * | http_cache () const |
UrlAsyncFetcher * | fetcher () const |
void | set_backend_first_byte_latency_histogram (Histogram *x) |
Histogram * | backend_first_byte_latency_histogram () const |
void | set_fallback_responses_served (Variable *x) |
Variable * | fallback_responses_served () const |
void | set_fallback_responses_served_while_revalidate (Variable *x) |
Variable * | fallback_responses_served_while_revalidate () const |
void | set_num_conditional_refreshes (Variable *x) |
Variable * | num_conditional_refreshes () const |
void | set_num_proactively_freshen_user_facing_request (Variable *x) |
Variable * | num_proactively_freshen_user_facing_request () const |
void | set_respect_vary (bool x) |
bool | respect_vary () const |
void | set_ignore_recent_fetch_failed (bool x) |
bool | ignore_recent_fetch_failed () const |
void | set_serve_stale_if_fetch_error (bool x) |
bool | serve_stale_if_fetch_error () const |
void | set_serve_stale_while_revalidate_threshold_sec (int64 x) |
int64 | serve_stale_while_revalidate_threshold_sec () const |
void | set_default_cache_html (bool x) |
bool | default_cache_html () const |
void | set_proactively_freshen_user_facing_request (bool x) |
bool | proactively_freshen_user_facing_request () const |
Static Public Attributes | |
static const int | kNotInCacheStatus |
Composes an asynchronous URL fetcher with an http cache, to generate an asynchronous caching URL fetcher.
This fetcher will asynchronously check the cache. If the url is found in cache and is still valid, the fetch's callback will be called right away. Otherwise (if fetcher != NULL) an async fetch will be performed in the fetcher, the result of which will be written into the cache. In case the fetch fails and there is a stale response in the cache, we serve the stale response.
If fetcher == NULL, this will only perform a cache lookup and then call the callback immediately.
In case of cache hit and resource is about to expire (80% of TTL or 5 mins which ever is minimum), it will trigger background fetch to freshen the value in cache. Background fetch only be triggered only if async_op_hooks_ != NULL, otherwise, fetcher object accessed by BackgroundFreshenFetch may be deleted by the time origin fetch finishes.
virtual void net_instaweb::CacheUrlAsyncFetcher::Fetch | ( | const GoogleString & | url, |
MessageHandler * | message_handler, | ||
AsyncFetch * | fetch | ||
) | [virtual] |
Asynchronously fetch a URL, set the response headers and stream the contents to fetch and call fetch->Done() when the fetch finishes.
There is an unchecked contract that response_headers are set before the response_writer or callback are used. Caution, several implementations do not satisfy this contract (but should).
TODO(sligocki): GoogleString -> GoogleUrl or at least StringPiece.
TODO(sligocki): Include the URL in the fetch, like the request headers.
Implements net_instaweb::UrlAsyncFetcher.
virtual bool net_instaweb::CacheUrlAsyncFetcher::SupportsHttps | ( | ) | const [inline, virtual] |
Determine if the fetcher supports fetching using HTTPS. By default we assume a fetcher can.
Reimplemented from net_instaweb::UrlAsyncFetcher.
const int net_instaweb::CacheUrlAsyncFetcher::kNotInCacheStatus [static] |
HTTP status code used to indicate that we failed the Fetch because result was not found in cache. (Only happens if fetcher_ == NULL).