Cache-Header

Ein Middleware, das Unterstützung für die Konfiguration von Cache-Headern bietet.

Die Cache-Kontrolle ist ein wesentlicher Teil der Web-Performance-Optimierung. Durch die korrekte Einstellung der Cache-Header können unnötige Netzwerkanfragen reduziert und die Anwendungsleistung verbessert werden. Cache-Control ist ein HTTP-Antwort-Header, der Anweisungen zur Browser-Cache-Strategie enthält. Er steuert, wer unter welchen Bedingungen Antworten cachen darf und wie lange sie gespeichert werden.

Die Implementierung umfasst intern drei Handler: CachingHeaders, Modified und ETag. CachingHeaders ist eine Kombination der beiden letzteren. Normalerweise wird CachingHeaders verwendet.

  • Modified: Bietet Cache-Validierung basierend auf der letzten Änderungszeit der Ressource.
  • ETag: Verwendet Entity Tags für eine präzisere Ressourcenvalidierung.
  • CachingHeaders: Kombiniert beide Mechanismen für eine umfassende Cache-Kontrolle.

Beispielcode

main.rs
Cargo.toml
caching-headers/src/main.rs
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 5800 and start serving
    let acceptor = TcpListener::new("0.0.0.0:5800").bind().await;
    Server::new(acceptor).serve(router).await;
}