From 6e8acef10f1621fa237c2e5cc7bd3f7d8cd20234 Mon Sep 17 00:00:00 2001 From: alboped Date: Fri, 24 Apr 2026 16:14:56 +0800 Subject: [PATCH] =?UTF-8?q?chore(cache):=20=E5=88=87=E6=8D=A2=E4=B8=BA=20N?= =?UTF-8?q?ginx=20=E9=9D=99=E6=80=81=E8=B5=84=E6=BA=90=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将图标资源迁移到 src/assets 并通过构建产物 hash 管理缓存,移除 public 目录旧图标引用;新增 Nginx 配置,设置 index.html 协商缓存与 /assets 长缓存策略。 Made-with: Cursor --- index.html | 4 +-- nginx.conf | 32 ++++++++++++++++++++ {public => src/assets}/apple-touch-icon.png | Bin {public => src/assets}/favicon.png | Bin {public => src/assets}/logo.png | Bin src/pages/index.tsx | 6 ++-- src/pages/login.tsx | 4 ++- 7 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 nginx.conf rename {public => src/assets}/apple-touch-icon.png (100%) rename {public => src/assets}/favicon.png (100%) rename {public => src/assets}/logo.png (100%) diff --git a/index.html b/index.html index ca27987..7ae8e13 100644 --- a/index.html +++ b/index.html @@ -6,8 +6,8 @@ name="viewport" content="initial-scale=1.0,maximum-scale=1,minimum-scale=1.0,user-scalable=no,width=device-width,viewport-fit=cover" /> - - + + Chat One Web diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..6386a6b --- /dev/null +++ b/nginx.conf @@ -0,0 +1,32 @@ +server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + # Vite build 产物:文件名带 hash,可长期缓存 + location /assets/ { + expires 1y; + add_header Cache-Control "public, max-age=31536000, immutable"; + try_files $uri =404; + } + + # 单独图标按中等缓存(如果后续也迁到 /assets,可删除) + location ~* ^/(favicon\.ico|favicon\.png|apple-touch-icon\.png)$ { + expires 7d; + add_header Cache-Control "public, max-age=604800"; + try_files $uri =404; + } + + # 入口 HTML 每次协商缓存,确保能拿到最新资源清单 + location = /index.html { + add_header Cache-Control "no-cache"; + try_files $uri =404; + } + + # SPA 路由回退 + location / { + try_files $uri $uri/ /index.html; + } +} diff --git a/public/apple-touch-icon.png b/src/assets/apple-touch-icon.png similarity index 100% rename from public/apple-touch-icon.png rename to src/assets/apple-touch-icon.png diff --git a/public/favicon.png b/src/assets/favicon.png similarity index 100% rename from public/favicon.png rename to src/assets/favicon.png diff --git a/public/logo.png b/src/assets/logo.png similarity index 100% rename from public/logo.png rename to src/assets/logo.png diff --git a/src/pages/index.tsx b/src/pages/index.tsx index c22e7d1..b695226 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -38,6 +38,7 @@ import { } from "antd"; import type { MenuProps } from "antd"; import { useNavigate, useParams } from "react-router-dom"; +import logoSrc from "../assets/logo.png"; import { ACCESS_TOKEN_KEY, SessionExpiredError, USER_KEY, logout } from "../api/auth"; import { createChatSession, @@ -97,6 +98,7 @@ const CONTEXT_WINDOW_SIZE = 8; const DEEP_THINK_STORAGE_KEY = "chatone-deep-think-enabled"; const SMART_SEARCH_STORAGE_KEY = "chatone-smart-search-enabled"; const SELECTED_MODEL_STORAGE_KEY = "chatone-selected-model"; +const LOGO_SRC = logoSrc; /** 展示名与请求 model 字段;需与后端实际支持的模型 id 一致 */ const DEFAULT_QWEN_MODEL = "qwen3.6-plus"; @@ -735,7 +737,7 @@ export default function HomePage() {