Encabezados de Caché

Un middleware que proporciona soporte para configurar encabezados de caché.

El control de caché es una parte crucial de la optimización del rendimiento web. Al configurar correctamente los encabezados de caché, se pueden reducir solicitudes de red innecesarias, mejorando así el rendimiento de la aplicación. Cache-Control es un encabezado de respuesta HTTP utilizado para especificar políticas de almacenamiento en caché del navegador. Controla quién puede almacenar respuestas en caché, bajo qué condiciones y durante cuánto tiempo.

Internamente, incluye implementaciones de tres Handlers: CachingHeaders, Modified y ETag. CachingHeaders es una combinación de los dos últimos. En circunstancias normales, se utiliza CachingHeaders.

  • Modified: Proporciona validación de caché basada en la última hora de modificación del recurso.
  • ETag: Utiliza Etiquetas de Entidad para ofrecer un mecanismo de validación de recursos más preciso.
  • CachingHeaders: Combina los dos mecanismos anteriores para proporcionar un soporte integral de control de caché.

Código de Ejemplo

main.rs
Cargo.toml
use salvo::prelude::*;

// Handler that returns a simple "Hello World" response
#[handler]
async fn hello() -> &'static str {
    "Hello World"
}

#[tokio::main]
async fn main() {
    // Initialize logging system
    tracing_subscriber::fmt().init();

    // Set up router with caching headers and compression middleware
    // CachingHeader must be before Compression to properly set cache control headers
    let router = Router::with_hoop(CachingHeaders::new())
        .hoop(Compression::new().min_length(0)) // Enable compression for all responses
        .get(hello);

    // Bind server to port 8698 and start serving
    let acceptor = TcpListener::new("0.0.0.0:8698").bind().await;
    Server::new(acceptor).serve(router).await;
}