智汇摄影ZHIHUI PHOTO
CHANGELOG / 更新日志

这个站点是怎么长出来的。

每一次改动都写在这里,包括改坏了又改回去的那些。

1.29.1 2026.11.4 优化

照片没出来会自己救一次,主屏图标也补上了

把「照片加载错误」拆成两种真事:一是图床的防盗链白名单没算上所有访问域名,二是缩略图或处理参数单张失败就直接空白。前者从源头放开,后者改成逐级回退,最差也画出一张占位。

  • 图床防盗链白名单改成覆盖 *zcstzhihui*(.icu、eu.cc 及以后的新域名都算自家),外站盗链依旧 403
  • 单张图坏了不再直接空白:先去 OSS 处理参数拿原图,再去掉 -t 缩略图后缀拿原图,最后画一张「这一格没冲出来」的占位
  • 这套兜底是全局的,作品墙、个人主页、团队页、抽屉大图一并生效,不用逐页改模板
  • iOS 主屏图标换成真正的 PNG(180/167/152 三档,深色底 + 光圈),根目录 /apple-touch-icon.png 与 /apple-touch-icon-precomposed.png 也补上了
  • 以前用的是 SVG 图标,iOS 不认,加到主屏幕只会显示网页截图——现在装完是正经图标
  • 离线缓存版本跟着提到 v1292,装过桌面的设备下次打开会自动换新壳
1.28.4 2026.11.2 优化

让这台 2 核 2G 跑得更快一点

从浏览器到 nginx 到 Node 到 SQLite 逐层过了一遍,把能省的一次省掉:首页首屏从 204ms 降到 72ms,接口命中缓存后压测从 1616 rps 涨到 3616 rps。

  • nginx 给 Node 开长连接池(keepalive 32),每个请求不再重新握手
  • 公开接口(作品列表、统计、团队、站点设置)加 5 秒微缓存:匿名访问直接由 nginx 回,命中率 100% 时压测 3616 rps;带登录 Cookie 的一律绕过,看到的是自己的数据
  • gzip 压缩等级与类型补齐(原本 nginx 只写了 gzip on,没写压什么),JSON 也压了
  • SQLite 页缓存从 2MB 提到 20MB、开 128MB mmap、临时表放内存
  • Node 的 keepAliveTimeout 从 15s 提到 65s,避免长连接被服务端先关掉
  • 首图加 fetchpriority=high,其余图片保持延迟加载,首屏更快看到照片
1.28.3 2026.11.2 优化

图片搬到广州,上传不再排队

图片从深圳搬到和服务器同城的广州 OSS,上传改走内网,以前一张 5MB 原图要十几秒,现在一秒内。

  • 图片存储换成 zhihui-upload-gz(华南3 广州),与这台 ECS 同城,上传走内网
  • 页面上的图片域名同步换成 zhihui-upload-gz.oss-cn-guangzhou.aliyuncs.com
  • 九十九兆历史图片一次性搬完,对象数与字节数逐项对过,一个没丢
  • 公共读、防盗链、缓存一年的响应头一并搬到新桶,浏览体验与原来一致
1.28.2 2026.11.2 优化

页脚那段话后台可改

每个页面最下面「关于这台服务器」那段,现在在后台自己写,留空就不显示。

  • 后台「站点设置 · 页脚 · 关于这台服务器」:小标题 + 正文都能改,保存即全站生效
  • 正文支持换行,按你写的分行显示;纯文本,不会被当成 HTML 执行
  • 正文留空则整段不显示 —— 不想解释服务器情况时就清掉
  • 默认文案改成现在这台机器的实际情况:2 核 2G、3M 带宽,慢了或者传失败多半是资源紧
1.28.1 2026.11.2 优化

日志时间精确到秒

后台每一行日志都带年月日时分秒,服务器日志文件也补上了时间戳。

  • 操作日志、请求日志、浏览记录、活动、举报、反馈:时间统一成 2026-11-02 15:26:09,秒级
  • 相对时间(3 分钟前)保留在第二行,两个一起看:既知道多近,也知道准确是哪一秒
  • 请求日志和操作日志导出的 CSV,时间改成本地时间秒级,Excel 打开不再差 8 小时
  • 服务器日志文件(data/site.log)每条带时间戳:2026-11-02 15:26:09 [upload] …,连刷二十遍也分得清先后
  • 投稿时间、审核时间、注册时间、邀请码使用记录同步改成秒级
1.28.0 2026.11.2 优化

热门摄影师点开就是主页

首页「热门摄影师」直接点进那个人的主页;管作品的地方多了个「管理主页」按钮。

  • 首页「这一阵按快门最多的人」卡片,点开是他自己的个人主页,不再只是搜他的名字
  • 主页关掉的人,卡片退回按作者看作品的老链接 —— 不会点进去撞一堵「未公开」
  • 账号页「我的发布」右上角新增「管理主页」按钮,一键回到自己的主页换背景、改资料
  • 主页右上角仍保留「换背景」「编辑资料」,两处互通
1.24.1 2026.11.2 优化 置顶

首屏从 2.83MB 瘦到 0.74MB

砍掉 Google Fonts、缩略图交给 OSS 转 webp、加 srcset 与一年缓存;load 1274ms → 206ms。

  • 首屏从 2.83MB 降到 0.74MB:删掉 Google Fonts(CSS 225KB + 十几个 woff2,国内还经常连不上),标题改用系统衬线栈
  • 缩略图走 OSS 图片处理:-t.jpg 缩到 800 宽并转 webp,前端再加一档 420w 的 srcset —— 手机上图片从 999KB 降到 188KB
  • OSS 对象统一 Cache-Control: public, max-age=31536000(图不改名,直接缓存一年),首页对 OSS 域名加 preconnect
  • 实测:首页 load 1274ms → 206ms,请求数 51 → 40,ECS 实际出网只剩 77KB/页(style.css 37KB + common.js 22KB)
1.24.0 2026.11.2 优化

图片搬上 OSS,机器只负责出页面

382 张图全部转到阿里云 OSS,新图自动同步;页面地址出口处改写,随时能切回本地。

  • 图片搬到了阿里云 OSS(zhihui-upload · 华南1 深圳 · 公共读),页面上的 /uploads/ 全换成 OSS 地址,ECS 的 3M 带宽只用来出 HTML/CSS/JS
  • 新图自动上传:服务端盯着 uploads 目录,落盘 800ms 后串行传(投稿 9 图 + 9 缩略图也不会把 2 核打满),本地仍留一份当双备份
  • 已把 382 个历史文件全部补传,数据库不动 —— 库里永远是相对路径,出口处才改写,随时能一键退回本地
  • 后台「站点设置」新增图片存储一节:Bucket / 地域 / 公开地址,外加「看 OSS 状态」自检
  • CSP 的 img-src 放行 *.aliyuncs.com,否则图片请求 200 但浏览器里是空白
1.23.0 2026.11.1 优化

站点搬上了阿里云

从家里那台电脑搬进 ECS:nginx + systemd + 一键发版脚本,每天自动备份,本机继续当开发机。

  • 站点搬上了阿里云 ECS:Debian 13 / 2 核 2G / 40G 云盘,nginx 反代 + systemd 托管,服务以 zhihui 用户运行,不再依赖家里那台电脑
  • 新增 deploy/ 部署套件:setup-server.sh 一键初始化(swap、Node 24、nginx、防火墙、日志轮转、备份 cron),publish.sh 在本机一条命令发版
  • 数据库用 VACUUM INTO 导快照再传,发版时先备份旧库、图片只补不删,落地后自动 curl 断言 200
  • 日志走 logrotate,每天 4:10 自动备份到 /var/backups/zhihui,保留 7 天
  • 文档补「部署到服务器(阿里云 ECS)」:目录结构、发版命令、验收清单与两个已知限制(3M 带宽、二级域名无法备案)
1.22.0 2026.11.1 优化

机位和三维下线了,知识库多讲了验机

机位地图与三维重建整块撤掉,后台侧栏不再带编号;协议与隐私升到版本 4;知识库补了验机、摄像与剪辑 34 条。

  • 机位地图与「视频转高斯泼溅」三维重建整体下线:页面、接口、后台面板、种子脚本与 6 张数据表一并删除,导航少了「机位」一格
  • 后台侧栏去掉 01 / 02 这类编号,只剩名字;页面导航牌同样只留文字
  • 《用户协议》与《隐私政策》升到版本 4:删掉机位与三维相关条款,投稿授权改成 8 条、隐私新增「谁能看到你的信息」与「常见疑问」
  • 隐私版本号推到 4,访客下次进站会重新确认一次
  • 知识库加了 34 条:验机 14 条(二手相机怎么验、镜头霉雾划痕的致命度排序)、摄像 12 条(180 度快门、Log、跟焦、收音)、剪辑调色 8 条(达芬奇、代理剪辑、示波器、LUT)
  • 知识库总数 239 条,分类仍是十二类,二级分类 29 个
1.21.0 2026.10.31 优化

跑得更快,也补了几个漏

隧道那头每秒都在花字节:这次把图片改成按需转 WebP、链接少一次登录查询,顺手把代码审查找出来的几个真问题修了。

  • 图片按需转 WebP:同一张图少传约三成字节,首页 /uploads 部分从 683KB 降到 534KB
  • 列表图懒加载,机位卡片走 ?w=420,单图从 62KB 变成 24KB
  • 标题字体只保留实际用到的两档字重,Google Fonts 那份 CSS 小了一圈
  • 访客打开页面不再先等一次登录查询:先按缓存出页头,再后台校准
  • 请求体上限按路径给:建模视频 820MB、投稿照片 110MB,不再被统一的 26MB 卡死
  • 机位改标题或描述也要重新过审;管理员删投稿连点赞一起清;删号不再留下浏览记录
1.19.0 2026.10.31 优化

部长这个身份,撤了

后台原来有六个角色,部长夹在管理员和会员中间,能审内容但没有管理员独有的权限。这次把它删掉:审核归管理员,权限矩阵少一列,人不用再猜谁能看什么。

  • 后台角色从 6 个减到 5 个:minister(部长)这个角色删掉了,它没有独有的权限
  • 部长原本能做的审核(投稿、机位、摄影知识、更新日志、发邀请码)现在统一由管理员做
  • 原部长账号 lookingT(张楚涵)已转为管理员,登录后看到的面板和以前一样
  • 批量导入里写「部长」「摄影部」「宣传部」现在会明确报「角色无法识别」,不会再悄悄建错角色
  • README 与 HANDOFF 的权限矩阵同步去掉了部长这一列,暗房管理员的列保持不变
1.15.0 2026.10.31 优化

门口加了五道锁

响应头、限流、密码规则、后台闸门、自动备份 —— 站点这一轮把该堵的洞都堵上了,页面看起来和以前一样。

  • 全站安全响应头:CSP、HSTS、权限策略、跨源资源策略一次补齐。
  • 接口与页面分桶限流,登录连错直接锁这个 IP,不再只锁单个账号。
  • 密码统一规则:至少 8 位,不撞用户名,不用 123456 这类常见口令。
  • 初始密码没改就进不了后台;改完密码其它设备立刻下线。
  • 请求体超过 26MB 直接 413 退回,不占内存。
  • 数据库每天自动快照,保留最近 21 份。
1.8.2 2026.10.31 优化

打开快了,图也真了

作品图和团队照不再降饱和,你看到的就是照片原本的颜色;列表图按屏宽自动挑小尺寸,静态资源该缓存就缓存,同样的网络下少等一半以上。

  • 图片恢复原色:作品广场、约拍、团队照都取消了降饱和与压暗,拍成什么样就显示什么样
  • 列表图自动挑尺寸:手机拿 420px、大屏拿 800px;团队页 6 张照从 2.2MB 降到 130KB
  • 静态资源长缓存:样式和脚本带版本号,改过才重新下载,没改就直接用本地的
  • 页面改走 ETag 校验:没改动就只回一个 304,不再整页重发
  • 大图不再整块塞进内存,边读边发;接口 JSON 压缩后体积约为原来的 1/5
  • 数据库写入加了排队等待,偶发并发冲突不再让请求直接失败
1.8.0 2026.10.31 优化

AI 审核上岗,只管三件事

接了自己的审核接口:只拦色情、血腥、暴力。构图、题材、画质一概不问 —— 协会不对作品好坏做评价。

  • 默认自动:正常投稿直接通过,命中色情 / 血腥 / 暴力才退回,理由写进站内通知
  • 图片和文字分开各看一遍 —— 配图正常但说明里在描述血腥场景,同样会拦
  • 云厂商自己的输入过滤也算违规,不会因为接口报错就放过去
  • 接口超时或网络失败时不瞎判,稿件转人工待审,后台能看到失败原因
  • 后台「站点设置 · 内容审核」可切回人工 / 辅助;密钥只回显前后各 4 位
1.4.0 2026.10.30 优化

请求日志与操作日志

谁访问了什么、谁改了什么,后台都能查。

  • 请求日志:路径、状态码、耗时、账号、IP、浏览器,支持按状态/关键词/方法筛选
  • 统计:2xx–5xx 分布、平均耗时、P95、最慢请求、高频错误
  • 操作日志:动作、目标对象、来源路径与 UA,可导出 CSV
  • data/access.log 文件日志,超 8MB 自动轮转
1.3.0 2026.10.29 优化

AI 内容审核与暗房模块

接阿里云百炼做审核辅助,暗房管理员有了独立后台。

  • 审核模式:人工 / AI 辅助 / AI 自动三档可切
  • AI 结论只作参考,失败永不阻塞投稿
  • 暗房管理员账号:只管胶卷冲洗价目与样片展示
  • 样片展示区:三列网格,点开大图