pub struct CacheControlMiddleware { /* private fields */ }Expand description
Middleware for setting HTTP cache control headers.
This middleware adds Cache-Control, Vary, and optionally Expires headers to responses. It supports various caching strategies from no-cache to aggressive caching for static assets.
§Features
- Cache-Control directives: Full support for RFC 7234 directives
- Vary header: Content negotiation support for Accept-Encoding, Accept-Language, etc.
- Expires header: Optional legacy header support
- Per-route configuration: Apply different policies via middleware stacks
- Method filtering: Only cache GET/HEAD by default
- Status filtering: Only cache successful responses
§Example
ⓘ
use fastapi_core::middleware::{CacheControlMiddleware, CacheControlConfig, CachePreset};
// No caching for API responses (default)
let api_cache = CacheControlMiddleware::new();
// Public caching for static assets
let static_cache = CacheControlMiddleware::with_preset(CachePreset::StaticAssets);
// Custom caching with Vary header
let custom_cache = CacheControlMiddleware::with_config(
CacheControlConfig::from_preset(CachePreset::PublicOneHour)
.vary("Accept-Encoding")
.vary("Accept-Language")
.with_expires(true)
);
// CDN-friendly caching
let cdn_cache = CacheControlMiddleware::with_preset(CachePreset::CdnFriendly);§Response Headers Set
| Header | Description |
|---|---|
Cache-Control | Main caching directive |
Vary | Headers that affect caching |
Expires | Legacy expiration (if enabled) |
Implementations§
Source§impl CacheControlMiddleware
impl CacheControlMiddleware
Sourcepub fn new() -> Self
pub fn new() -> Self
Create middleware with default no-cache policy.
This is the safest default - no caching unless explicitly configured.
Sourcepub fn with_preset(preset: CachePreset) -> Self
pub fn with_preset(preset: CachePreset) -> Self
Create middleware with a preset caching policy.
Sourcepub fn with_config(config: CacheControlConfig) -> Self
pub fn with_config(config: CacheControlConfig) -> Self
Create middleware with custom configuration.
Trait Implementations§
Source§impl Default for CacheControlMiddleware
impl Default for CacheControlMiddleware
Source§impl Middleware for CacheControlMiddleware
impl Middleware for CacheControlMiddleware
Source§fn after<'a>(
&'a self,
_ctx: &'a RequestContext,
req: &'a Request,
response: Response,
) -> BoxFuture<'a, Response>
fn after<'a>( &'a self, _ctx: &'a RequestContext, req: &'a Request, response: Response, ) -> BoxFuture<'a, Response>
Called after the handler executes. Read more
Source§fn name(&self) -> &'static str
fn name(&self) -> &'static str
Returns the middleware name for debugging and logging. Read more
Source§fn before<'a>(
&'a self,
_ctx: &'a RequestContext,
_req: &'a mut Request,
) -> BoxFuture<'a, ControlFlow>
fn before<'a>( &'a self, _ctx: &'a RequestContext, _req: &'a mut Request, ) -> BoxFuture<'a, ControlFlow>
Called before the handler executes. Read more
Auto Trait Implementations§
impl Freeze for CacheControlMiddleware
impl RefUnwindSafe for CacheControlMiddleware
impl Send for CacheControlMiddleware
impl Sync for CacheControlMiddleware
impl Unpin for CacheControlMiddleware
impl UnwindSafe for CacheControlMiddleware
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: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Instruments this future with a span (no-op when disabled).
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Instruments this future with the current span (no-op when disabled).