前两天有个朋友问我,说他的小站每个月CDN费用都要好几百,感觉有点吃不消。我就问他你网站有多少流量,他说日均IP也就两三千,这就有点奇怪了。
后来我帮他看了下,发现问题还不少。说实话很多人做站时间长了,容易忽略一些基础优化的东西,今天就来聊聊这个事。
一、图片真的是大户
这个真的是老生常谈了,但很多人就是不听。我说你网站上那些banner图,动不动就几MB,用户打开首页光加载这些图就要好几秒。现在大家都用手机上网,谁愿意等?
我给他支了个招:
- 把PNG转成WebP,体积能小一大半,现在主流浏览器都支持了
- 图片要压缩,tinypng这个网站很好用,批量压缩也不收费
- 能用CSS实现的渐变、阴影什么的,别用图片,CSS又不占带宽
他照做之后,首页加载从4MB降到了800KB,这差距...
二、静态资源缓存要设置好
这个很多人知道要设置,但设置得不对。我看过不少人的nginx配置,缓存时间是设了,但静态资源的版本号没加。结果呢?一更新前端文件,用户还在加载旧的缓存版本,页面各种报错。
正确的做法是在资源URL后面加个hash或者时间戳,比如 main.js?v=1.2.3 或者 main.abc123.js。这样每次更新版本号都变了,浏览器就会重新请求新的文件。
三、CDN回源也是个坑
很多人以为用了CDN就万事大吉,其实CDN也有坑。如果你的回源率太高,那CDN就白用了,流量费照样蹭蹭涨。
什么情况回源率高?
- 缓存时间设置太短
- URL参数太多导致缓存命中率低
- 没做动静分离
我朋友的问题就是缓存时间只设了1小时,而且所有请求都走CDN。后来改成静态资源走CDN,动态请求直接回源,静态资源缓存设成30天,回源率直接从40%降到了5%不到。
四、别忽视代码优化
说实话,代码优化这块很多人觉得没必要,反正服务器配置够高。但你想想,代码写得烂,每次请求都要多执行几十毫秒,日积月累下来也是一笔不小的开销。
几个简单的优化点:
- 数据库查询能合并的就合并,别写循环查库
- PHP的opcache记得开起来,免费的性能提升不要白不要
- 前端JS能懒加载就懒加载,首屏看不到的东西别着急加载
五、最后的建议
做站是个长期的事,优化也一样。别总想着一步到位,先做最影响体验的地方,比如图片压缩、缓存设置这些,见效最快。
还有,定期看看你的服务器日志和CDN报表,很多时候问题就藏在数据里。我朋友之前就是没注意,白白多花了不少冤枉钱。
好了,今天就聊到这,希望对大家有帮助。有问题欢迎留言讨论。
