快取標頭
提供對快取標頭配置支援的中介軟體。
快取控制是網路效能優化的重要環節,透過正確設定快取標頭,可以減少不必要的網路請求,提升應用程式效能。Cache-Control 是HTTP回應標頭中用於指定瀏覽器快取策略的指令,能控制誰在什麼條件下可以快取回應以及快取多久。
實際實作內部包含了 CachingHeaders
、Modified
、ETag
三個 Handler
的實作,CachingHeaders
是後兩者的組合。正常情況下建議使用 CachingHeaders
。
Modified
:基於資源的最後修改時間提供快取驗證
ETag
:使用實體標籤(Entity Tag)提供更精確的資源驗證機制
CachingHeaders
:結合上述兩種機制,提供完整的快取控制支援
範例程式碼
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;
}