diff --git a/src/main.rs b/src/main.rs index 31ec245..68e228f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,7 +21,6 @@ mod db; mod highlight; mod hooks; #[cfg(feature = "server")] -mod middleware; mod models; mod pages; mod router; @@ -104,11 +103,6 @@ fn main() { // 合并三条路由:自定义 API、静态资源、Dioxus 主应用 let router = api_routes.merge(static_routes).merge(dioxus_app); - // 对 SSR 返回的 HTML 做空白压缩(保留
/ 等标签内格式)
- let router = router.layer(axum::middleware::from_fn(
- crate::middleware::minify_html::layer,
- ));
-
Ok(router)
});
}
diff --git a/src/middleware/minify_html.rs b/src/middleware/minify_html.rs
deleted file mode 100644
index 1494c3e..0000000
--- a/src/middleware/minify_html.rs
+++ /dev/null
@@ -1,63 +0,0 @@
-//! SSR HTML 空白压缩中间件。
-//!
-//! 对 Dioxus fullstack 返回的 `text/html` 响应做轻量 minify。
-//!
-//! 注意:这里**不**维护 per-URL 缓存。同一个 URL 在 admin 登录态与匿名态下
-//! 渲染出的 HTML 不同(例如是否带管理按钮),按 URL 缓存会导致跨用户内容
-//! 泄露。Dioxus 的增量渲染器(ISRG)本身已经按 URL 缓存了 SSR HTML,
-//! 这里的 minify 只是对其输出做一次无损空白折叠,无需再叠加一层缓存。
-
-#[cfg(feature = "server")]
-use axum::{
- body::Body,
- extract::Request,
- http::{header, StatusCode},
- middleware::Next,
- response::Response,
-};
-use http_body_util::BodyExt;
-
-/// Axum 中间件入口。
-pub async fn layer(request: Request, next: Next) -> Response {
- let response = next.run(request).await;
-
- let is_html = response
- .headers()
- .get(header::CONTENT_TYPE)
- .and_then(|v| v.to_str().ok())
- .map(|ct| ct.starts_with("text/html"))
- .unwrap_or(false);
-
- if !is_html {
- return response;
- }
-
- let (parts, body) = response.into_parts();
- let bytes = match body.collect().await {
- Ok(collected) => collected.to_bytes(),
- Err(_) => {
- return Response::builder()
- .status(StatusCode::INTERNAL_SERVER_ERROR)
- .body(Body::empty())
- .expect("failed to build error response");
- }
- };
-
- let original = String::from_utf8_lossy(&bytes);
- let minified = crate::utils::html_minify::minify_html(&original);
-
- let mut response = Response::builder()
- .status(parts.status)
- .header(header::CONTENT_TYPE, "text/html; charset=utf-8")
- .body(Body::from(minified.clone()))
- .expect("failed to build minified response");
-
- // 保留原响应的其他 header,并修正 Content-Length
- *response.headers_mut() = parts.headers;
- response.headers_mut().remove(header::TRANSFER_ENCODING);
- response
- .headers_mut()
- .insert(header::CONTENT_LENGTH, minified.len().into());
-
- response
-}
diff --git a/src/middleware/mod.rs b/src/middleware/mod.rs
deleted file mode 100644
index b276e30..0000000
--- a/src/middleware/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-#[cfg(feature = "server")]
-pub mod minify_html;
diff --git a/src/utils/html_minify.rs b/src/utils/html_minify.rs
deleted file mode 100644
index 3ff2e16..0000000
--- a/src/utils/html_minify.rs
+++ /dev/null
@@ -1,93 +0,0 @@
-//! HTML 空白压缩工具函数。
-//!
-//! 仅服务端使用。对 HTML 片段做轻量 minify:
-//! - 合并标签之间连续空白为一个空格;
-//! - 移除普通 HTML 注释,但**保留 Dioxus hydration marker 注释**;
-//! - 保留 ``、``、`