跳到主要内容
弗美科技
服务案例

微软中国活动站点,三语加 CDN

给微软中国做一场线上活动的落地页,中英日三语、报名表单加资料下载。难点是海外同事也要能打开,静态资源全放 CDN,图片按语言分包;表单提交走一个独立域名,避免被缓存。上线前拿三个地区的节点各测了 10 次,最慢的一次 1.9 秒。

2020年7月3日活动站点多语言加速

一场线上活动的落地页,周期三周。页面本身不复杂:主视觉、议程、讲者、报名表单、资料下载。麻烦的是两边都要看,国内和海外的同事都得能顺畅打开。

静态资源全放 CDN

图片、样式、脚本一共 30 多个文件,全部推到 CDN,按语言分了三个目录:zh、en、ja。不是翻译放三个目录,是有些图里带文字,得各出一版。主视觉那张最大的 PNG 压到 180K,再转一份 webp。

HTML 本身不走 CDN,因为里面有报名状态这种不能缓存的东西。Nginx 上给静态资源设了 30 天缓存,文件名带内容哈希,改了就换名字,不用担心用户手里是旧的。

表单单独走一个域名

报名表单提交到 submit.域名 下,这个域名在 CDN 上明确配了不缓存、不加速,直接回源。第一版图省事跟主站同域,测试时有几次 POST 被边缘节点拦了,返回 403。分开之后没再出过。

表单 6 个字段,姓名、公司、邮箱、职位、语种、是否同意接收资料。校验前后各一遍,后端 PHP 收,写进 MySQL,同时往客户那边的企业微信群里推一条提醒。推送失败不影响提交成功,只记日志,这条是特意定的,不能让一个群消息卡住报名。

三地测了 30 次

上线前一天,我们找了三个地区的节点各测 10 次首屏:北京、法兰克福、新加坡。用 curl 记时间,加上浏览器里手动点。最慢的一次 1.9 秒,出在新加坡拉一张没命中缓存的图;命中之后都在 1 秒上下。

有个小问题:日文站的字体在部分 Windows 上回退成了宋体,看着发虚。临时给日文单独指定了一组字体栈,没动其他两版。

三语图片那点返工

按语言分目录这件事,第一版做得不彻底。文字类图片分了 zh、en、ja 三套,但漏了几张纯装饰的横幅,里面其实压着一行中文 slogan。日文站上线前客户自己点出来,说那张图上有字没换。重出了 4 张,文件名加了语言后缀,又在构建脚本里加了一条检查:扫描 zh 目录里的图片名,另外两个目录缺哪张就报错。

后来这条检查还拦下过一次,是英文站少了张图标。机器比人靠谱的地方就在这儿,它不会「看着差不多就过了」。

表单那 6 个字段的取舍

最初客户想收 9 个,我们砍到 6 个,去掉的是公司规模、行业、从哪里听说。理由跟签证表那次一样:这三项活动结束后没人拿去做分析,收了也是躺在 CSV 里。留的「是否同意接收资料」是法务要求,必填,默认不勾。

推送到企业微信群那条提醒,第一版把手机号也带上了,客户说别在群里发全号,改成只显示尾号。这种改动不进需求文档,通常就一句话的事,但漏了会挺尴尬。

那 1.9 秒

三地测出来的最慢一次 1.9 秒,出在新加坡拉一张没命中缓存的图。后来我们给那批图片配了预热,活动前一天主动推一遍边缘节点。第二年再做类似站点,这一步写进了上线清单,排在「检查证书」后面。

那张照片里北京在下雨,现在还存在项目群相册里,有人后来拿它当过一次周报封面,配的文字是「又一年」。那 4 张重出的图,文件名最后都带了 _ja,现在还在仓库里,构建检查那条脚本只有 9 行,比图片本身轻多了。

活动当天

7 月 3 号上午 9 点开放报名。我们几个人在后台看提交曲线,前 20 分钟 300 多条。资料下载那个按钮点得比预想多,中午把 PDF 也推到 CDN 上,原来放在源站,下的人一多源站带宽有点紧。

下午客户问要不要加一个实时人数展示。我们没加,怕又要改缓存策略。活动结束导了一份 CSV,900 多行,按语种分了三个 sheet 发过去。

收工的时候北京在下雨,群里有人发了张窗外的照片。

商务咨询 · 免费初步沟通

需要针对你的场景给个建议?

把业务背景和当前系统情况告诉我们,我们会给出可执行的思路。

在线留言

周一至周五 9:00–18:00 · 工作日 9:00–18:00 响应,留言会在一个工作日内回复。

商务微信
商务微信二维码

扫一扫,加商务微信咨询服务与方案报价

或填写需求表单