生产站改了一点 CSS,如果直接运行不带参数的 setup:static-content:deploy,Magento 会把后台主题、Luma、多个语言包和所有自定义主题一起编译。站点越大,发布时间越长。实际只改一个主题时,部署范围可以收得很小,但 theme、area 和 locale 最好一起写清楚。

先确认主题代码和商店语言

主题名不是目录最后一级,而是注册时的 Vendor/theme。语言也要以商店实际 locale 为准:

php bin/magento config:show general/locale/code
php bin/magento theme:uninstall --help

第二条只是利用命令帮助确认当前版本的主题相关能力,不要真的执行卸载。多 Store View 环境还应从后台配置或数据库确认各 scope 的 locale,不能假设全部是 en_US。

生产模式下把范围写完整

例如只部署 Acme/shop 的中文和英文前台资源:

php bin/magento setup:static-content:deploy \
  --area frontend \
  --theme Acme/shop \
  zh_Hans_CN en_US \
  --jobs 4

如果服务器 CPU 和内存不宽裕,--jobs 不要盲目开大。主题继承的父主题资源会由依赖关系处理,通常不需要再把 Luma 单独列一遍。

开发模式不要拿生产命令反复硬跑

开发模式下静态资源可以按请求生成。此时 CSS 改动看不到,先检查浏览器拿到的文件路径、静态文件签名和预处理缓存,而不是每次都全量 deploy。生产模式才把静态资源部署当作发布步骤,并尽量在维护窗口或新 release 目录里完成。

部署完成后别只看命令返回0

检查目标目录是否真的生成:

find pub/static/frontend/Acme/shop -maxdepth 2 -type d

再用浏览器 Network 查看 CSS URL 对应的 theme 和 locale。若启用了静态内容版本号,还要刷新页面缓存和 CDN,避免 HTML 仍引用旧版本。只部署一个主题能缩短发布时间,但前提是本次改动没有同时影响后台资源、共享语言包或其他主题;涉及模块级 view/frontend 文件时,也要确认所有使用该模块资源的主题是否都需要重新部署。