fix(server): add Cache-Control: no-store to static file responses
Prevents browser from caching JS/CSS modules, so frontend changes take effect immediately on page refresh without needing hard refresh. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
3e277cdb52
commit
622d010cb1
16
src/main.rs
16
src/main.rs
|
|
@ -21,9 +21,19 @@ use event::EventManager;
|
||||||
use middleware::simple_logger;
|
use middleware::simple_logger;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::sync::mpsc;
|
use tokio::sync::mpsc;
|
||||||
|
use axum::{extract::Request, middleware::Next, response::Response};
|
||||||
use tower_http::cors::{Any, CorsLayer};
|
use tower_http::cors::{Any, CorsLayer};
|
||||||
use tower_http::services::ServeDir;
|
use tower_http::services::ServeDir;
|
||||||
|
|
||||||
|
async fn no_cache(req: Request, next: Next) -> Response {
|
||||||
|
let mut res = next.run(req).await;
|
||||||
|
res.headers_mut().insert(
|
||||||
|
axum::http::header::CACHE_CONTROL,
|
||||||
|
axum::http::HeaderValue::from_static("no-store"),
|
||||||
|
);
|
||||||
|
res
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct AppState {
|
pub struct AppState {
|
||||||
pub config: AppConfig,
|
pub config: AppConfig,
|
||||||
|
|
@ -259,9 +269,11 @@ fn build_router(state: AppState) -> Router {
|
||||||
|
|
||||||
Router::new()
|
Router::new()
|
||||||
.merge(all_route)
|
.merge(all_route)
|
||||||
.nest_service(
|
.nest(
|
||||||
"/ui",
|
"/ui",
|
||||||
ServeDir::new("web").append_index_html_on_directories(true),
|
Router::new()
|
||||||
|
.fallback_service(ServeDir::new("web").append_index_html_on_directories(true))
|
||||||
|
.layer(axum::middleware::from_fn(no_cache)),
|
||||||
)
|
)
|
||||||
.route("/ws/public", get(websocket::public_websocket_handler))
|
.route("/ws/public", get(websocket::public_websocket_handler))
|
||||||
.route(
|
.route(
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>PLC Control</title>
|
<title>PLC Control</title>
|
||||||
<link rel="stylesheet" href="/ui/styles.css?v=20260323e" />
|
<link rel="stylesheet" href="/ui/styles.css?v=20260324a" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div data-partial="/ui/html/topbar.html"></div>
|
<div data-partial="/ui/html/topbar.html"></div>
|
||||||
|
|
@ -20,6 +20,6 @@
|
||||||
<div data-partial="/ui/html/modals.html"></div>
|
<div data-partial="/ui/html/modals.html"></div>
|
||||||
<div data-partial="/ui/html/api-doc-drawer.html"></div>
|
<div data-partial="/ui/html/api-doc-drawer.html"></div>
|
||||||
|
|
||||||
<script type="module" src="/ui/js/index.js?v=20260323f"></script>
|
<script type="module" src="/ui/js/index.js?v=20260324a"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue