快取標頭

提供快取標頭配置支援的中介軟體。

快取控制是網頁效能最佳化的重要環節,透過正確設定快取標頭,能夠減少不必要的網路請求,提升應用程式效能。Cache-Control 是HTTP回應標頭中用於指定瀏覽器快取策略的指令,可控制「誰在何種條件下能夠快取回應」以及「快取的有效時長」。

實作內部包含 CachingHeadersModifiedETag 三個 Handler 的實現,其中 CachingHeaders 是後兩者的組合。一般情況下建議使用 CachingHeaders

  • Modified:基於資源的最後修改時間提供快取驗證
  • ETag:使用實體標籤(Entity Tag)提供更精確的資源驗證機制
  • CachingHeaders:整合上述兩種機制,提供完整的快取控制支援

範例程式碼

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