キャッシュヘッダー

キャッシュヘッダー設定をサポートするミドルウェアを提供します。

キャッシュ制御はWebパフォーマンス最適化の重要な要素であり、適切にキャッシュヘッダーを設定することで、不要なネットワークリクエストを減らし、アプリケーションのパフォーマンスを向上させることができます。Cache-Control は、ブラウザのキャッシュ戦略を指定するためのHTTPレスポンスヘッダーであり、誰がどの条件下でレスポンスをキャッシュできるか、またどのくらいの期間キャッシュするかを制御できます。

内部的には CachingHeadersModifiedETag という3つの Handler の実装を含んでおり、CachingHeaders は後二者を組み合わせたものです。通常は CachingHeaders を使用します。

  • Modified:リソースの最終更新時刻に基づいてキャッシュ検証を提供します
  • ETag:エンティティタグ(Entity Tag)を使用して、より精密なリソース検証メカニズムを提供します
  • CachingHeaders:上記2つのメカニズムを組み合わせ、完全なキャッシュ制御サポートを提供します

サンプルコード

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