pub struct HttpCache { /* private fields */ }Expand description
A simple memory cache.
Elements will be evicted based on the cache heuristic. We weight elements
by the number of entries per given url. We evict currently a whole url.
The cache makes extensive use of Arc::unwrap_or_clone or and Arc::into_inner
to modify the cached entries. This is ok because CachedResource are cheap to clone
Implementations§
Source§impl HttpCache
impl HttpCache
Sourcepub async fn store(&self, request: &Request, response: &Response)
pub async fn store(&self, request: &Request, response: &Response)
Insert a response for request into the cache (used by tests that need direct access).
Sourcepub async fn construct_response(
&self,
request: &Request,
done_chan: &mut DoneChannel,
) -> Option<Response>
pub async fn construct_response( &self, request: &Request, done_chan: &mut DoneChannel, ) -> Option<Response>
Try to construct a cached response for request.
Sourcepub async fn get_or_guard(
&self,
entry_key: CacheKey,
) -> CachedResourcesOrGuard<'_>
pub async fn get_or_guard( &self, entry_key: CacheKey, ) -> CachedResourcesOrGuard<'_>
If the value exist in the cache, return it. If the value does not exist, return a guard you can use to insert values in the cache. If the guard is alive, all other accesses to this function will block.
Trait Implementations§
Source§impl MallocSizeOf for HttpCache
impl MallocSizeOf for HttpCache
Source§fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Measure the heap usage of all descendant heap-allocated structures, but
not the space taken up by the value itself.
Auto Trait Implementations§
impl Freeze for HttpCache
impl !RefUnwindSafe for HttpCache
impl Send for HttpCache
impl Sync for HttpCache
impl Unpin for HttpCache
impl UnsafeUnpin for HttpCache
impl !UnwindSafe for HttpCache
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> MaybeBoxed<Box<T>> for T
impl<T> MaybeBoxed<Box<T>> for T
Source§fn maybe_boxed(self) -> Box<T>
fn maybe_boxed(self) -> Box<T>
Convert
Source§impl<T> MaybeBoxed<T> for T
impl<T> MaybeBoxed<T> for T
Source§fn maybe_boxed(self) -> T
fn maybe_boxed(self) -> T
Convert