Cache-Header

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

Die Cache-Steuerung ist ein entscheidender Teil der Web-Performance-Optimierung. Durch korrektes Setzen von Cache-Headern können unnötige Netzwerkanfragen reduziert werden, wodurch die Anwendungsleistung verbessert wird. Cache-Control ist ein HTTP-Antwort-Header, der verwendet wird, um Browser-Caching-Richtlinien festzulegen. Es steuert, wer Antworten cachen kann, unter welchen Bedingungen und für wie lange.

Intern enthält es Implementierungen von drei Handlers: CachingHeaders, Modified und ETag. CachingHeaders ist eine Kombination der beiden letzteren. Unter normalen Umständen wird CachingHeaders verwendet.

  • Modified: Bietet Cache-Validierung basierend auf der letzten Änderungszeit der Ressource.
  • ETag: Verwendet Entity Tags, um einen präziseren Ressourcen-Validierungsmechanismus zu bieten.
  • CachingHeaders: Kombiniert die beiden oben genannten Mechanismen, um umfassende Cache-Steuerungsunterstützung zu bieten.

Beispielcode

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;
}