キャッシュヘッダー
キャッシュヘッダー設定をサポートするミドルウェアを提供します。
キャッシュ制御はWebパフォーマンス最適化の重要な要素であり、適切にキャッシュヘッダーを設定することで不要なネットワークリクエストを減らし、アプリケーションのパフォーマンスを向上させることができます。Cache-ControlはHTTPレスポンスヘッダーで、ブラウザのキャッシュ戦略を指定するためのディレクティブであり、誰がどの条件下でレスポンスをキャッシュできるか、またどのくらいの期間キャッシュするかを制御します。
内部実装ではCachingHeaders
、Modified
、ETag
の3つのHandler
が実装されており、CachingHeaders
は後ろ2つの組み合わせとなっています。通常はCachingHeaders
を使用します。
Modified
:リソースの最終更新時刻に基づいたキャッシュ検証を提供
ETag
:エンティティタグ(Entity Tag)を使用したより精密なリソース検証メカニズムを提供
CachingHeaders
:上記2つのメカニズムを組み合わせた完全なキャッシュ制御サポートを提供
サンプルコード
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;
}