项目背景
今年年初接到了一个任务:重构日照某机械公司的企业官网。这个网站是2015年做的,至今已经运行了将近9年。客户反馈的问题包括:页面太丑/手机上无法正常浏览/打开速度慢/后台不好用/百度搜索排名很低。
重构前的诊断
原站技术栈
- 前端:HTML4 + table布局 + 内联样式 + jQuery 1.8
- 后端:PHP 5.4 + 原生MySQL操作(无框架)
- 服务器:阿里云ECS 1核1G(2015年配置)
- 域名:用了9年的老域名(这点很好,域名权重有积累)
具体问题清单
- 全部使用table布局,语义化极差
- CSS内联在HTML标签里,超过2000行的style属性
- 没有响应式设计,手机端完全不可用
- 图片没有压缩,首页加载了15张未经处理的JPG(总计8MB+)
- jQuery版本过旧存在已知安全漏洞
- PHP 5.4早已停止维护
- SQL注入漏洞(多处字符串拼接SQL)
- 没有HTTPS
- 百度收录了300多个页面但大部分是低质量重复页
重构方案
技术决策
- 前端:Vue 3 + Vite + SCSS(组件化开发,便于维护)
- SSR:Nuxt 3(解决SEO问题)
- 后端API:Python FastAPI(替代旧PHP后端)
- 数据库:MySQL 8.0(从原库迁移并优化表结构)
- 部署:阿里云ECS 2核4G + OSS存储 + CDN加速 + HTTPS
迁移策略
采用渐进式迁移而非推倒重来:先搭建新环境并行运行到迁移内容数据再到切换DNS前充分测试再到保留原站30天观察期再到确认无误后下线旧站。
重构中的坑
坑一:URL变更导致的SEO风险
新站的URL规则和旧站不同(旧站是动态参数URL如/news.php?id=123,新站是语义化URL如/news/slug-name)。解决方案:在Nginx层做301重定向,将所有旧URL映射到对应的新URL。同时提交百度站长平台的改规则工具。
坑二:图片迁移的噩梦
旧站有2000+张图片散落在各个目录,文件名混乱(中文/空格/特殊字符)。写了个脚本批量处理:转英文文件名/压缩/WebP格式转换/上传OSS。
坑三:客户坚持要保留的功能
客户坚持要保留一个2016年加的在IE6上才能正常运行的ActiveX控件功能(用于查看某种3D模型)。最终折中方案:保留旧功能页面作为一个独立入口,新站其他部分全面现代化。
重构效果
| 指标 | 重构前 | 重构后 | 提升 |
|---|---|---|---|
| 首页加载时间 | 12.3秒 | 1.8秒 | 85%上升 |
| Google PageSpeed评分 | 28/100 | 92/100 | 228%上升 |
| 百度移动适配 | 不通过 | 完美 | -- |
| 自然流量(月均) | 320次 | 1800次 | 462%上升 |
| 询盘转化率 | 0.8% | 3.2% | 300%上升 |