Cache

Struct Cache 

Source
pub struct Cache<S> { /* private fields */ }
Expand description

Implement a HTTP cache.

Implementations§

Source§

impl<S> Cache<S>
where S: CacheStorage,

Source

pub fn new(storage: S) -> Self

Construct a new cache with the given storage.

Defaults to a private cache.

Source

pub fn new_with_options(storage: S, options: CacheOptions) -> Self

Construct a new cache with the given storage and options.

Source

pub fn with_revalidation_hook( self, hook: impl Fn(&dyn RequestLike, &mut HeaderMap) -> Result<()> + Send + Sync + 'static, ) -> Self

Sets the revalidation hook to use.

The hook is provided the original request and a mutable header map containing headers explicitly set for the revalidation request.

For example, a hook may alter the revalidation headers to update an Authorization header based on the headers used for revalidation.

If the hook returns an error, the error is propagated out as the result of the original request.

Source

pub fn storage(&self) -> &S

Gets the storage used by the cache.

Source

pub async fn send<B: Body + Send>( &self, request: impl Request<B>, ) -> Result<Response<CacheBody<B>>>

Sends a HTTP request through the cache.

If a previous response is cached and not stale, the request is not sent upstream and the cached response is returned.

If a previous response is cached and is stale, the response is revalidated, the cache is updated, and the cached response returned.

If a previous response is not in the cache, the request is sent upstream and the response is cached, if it is cacheable.

Auto Trait Implementations§

§

impl<S> Freeze for Cache<S>
where S: Freeze,

§

impl<S> !RefUnwindSafe for Cache<S>

§

impl<S> Send for Cache<S>
where S: Send,

§

impl<S> Sync for Cache<S>
where S: Sync,

§

impl<S> Unpin for Cache<S>
where S: Unpin,

§

impl<S> !UnwindSafe for Cache<S>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more