AI摘要
前言
很多人用Typecho搭建博客后,总觉得网站打开速度不够快。尤其是图片多、文章多了之后,加载速度明显下降。
其实Typecho本身已经很轻量了,但只要稍作优化,速度还能再上一个台阶。今天就给大家分享8个实用的Typecho性能优化技巧,照着做,你的博客也能飞起来。
一、开启Gzip压缩
Gzip压缩可以让网页体积减少60%-80%,是性价比最高的优化手段。
Nginx配置方法:
# 在nginx.conf的http块中添加
gzip on;
gzip_comp_level 6;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";Apache配置方法:
# 在.htaccess中添加
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/json application/javascript application/x-javascript
</IfModule>配置完重启服务,用站长工具检测一下,看看是否成功开启了Gzip。
二、配置浏览器缓存
让浏览器缓存静态资源,这样用户第二次访问时就不用重新下载了,速度会快很多。
Nginx配置:
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
# HTML页面不缓存或者短时间缓存
location ~* \.(html|htm)$ {
expires 1h;
}Apache配置:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType application/javascript "access plus 30 days"
ExpiresByType text/html "access plus 1 hour"
</IfModule>三、使用CDN加速
如果你的访客分布在全国各地,或者服务器带宽比较小,强烈建议用CDN。
推荐的CDN服务商:
- 又拍云:国内老牌,对小站长友好
- 七牛云:免费额度够用
- 阿里云CDN:大公司,稳定可靠
- 云flare:免费版就够用,适合有海外访客的
使用建议:
- 静态资源(图片、CSS、JS)全部走CDN
- 可以用单独的静态域名,比如static.zoudh.me
- 配置好缓存规则,避免动态内容被缓存
- 记得配置回源,不然更新了内容CDN不刷新
CDN不仅能加速,还能帮你挡掉一部分攻击,减轻服务器压力,一举多得。
四、图片优化
图片往往是网页里最大的资源,优化图片效果非常明显。
优化方法:
1. 压缩图片
- 上传前先用工具压缩,比如TinyPNG
- 不要上传原图,尤其是手机拍的照片,动辄几MB
- 建议图片控制在500KB以内,最好200KB以下
2. 选择合适的格式
- 照片类用JPG/WebP
- 图标、截图类用PNG/WebP
- 简单图形可以考虑用SVG
3. 懒加载
图片懒加载就是滚动到哪里加载到哪里,不用一上来就加载所有图片。
Typecho有相关的插件可以实现懒加载,或者自己加几行JS代码也行:
// 简单的图片懒加载
document.addEventListener("DOMContentLoaded", function() {
const images = document.querySelectorAll('img');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
observer.unobserve(img);
}
});
});
images.forEach(img => observer.observe(img));
});五、数据库优化
Typecho用的是MySQL/MariaDB数据库,文章多了之后,数据库也会变慢。
优化方法:
1. 优化数据库表
定期优化和修复数据库表,可以在phpMyAdmin里操作,或者用命令:
OPTIMIZE TABLE typecho_contents;
OPTIMIZE TABLE typecho_comments;
OPTIMIZE TABLE typecho_metas;2. 开启数据库查询缓存
如果是自己的服务器,可以在MySQL配置里开启查询缓存:
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M3. 减少数据库查询
- 不要在主题里写太多冗余的查询
- 能用缓存的就不要每次都查数据库
- 侧边栏的文章列表、分类列表等可以做静态化
六、使用缓存插件
缓存是提升动态网站速度的神器。把动态生成的页面存成静态文件,下次直接返回静态文件,不用再去查数据库、执行PHP。
Typecho常用缓存插件:
1. 静态缓存插件
比如StaticCache、Caching等插件,可以把整个页面生成静态HTML文件。
优点:速度最快,服务器压力最小
缺点:更新文章、发评论后需要刷新缓存
2. 数据缓存
用Redis或者Memcached做数据缓存,把常用的数据存在内存里。
优点:灵活,适合动态内容多的网站
缺点:需要服务器支持,配置稍微复杂一点
建议: 个人博客用静态页面缓存就够了,简单粗暴效果好。
七、精简主题和插件
很多人喜欢给博客装一堆插件,主题也选功能特别多的。其实功能越多,速度越慢。
优化建议:
1. 只保留必要的插件
- 不用的插件全部删掉,不要只是禁用
- 能用代码实现的就不要装插件
- 定期清理不用的插件和主题
2. 选择轻量的主题
- 不要选功能太花哨的主题
- 优先选代码简洁、加载快的主题
- 自己改主题的时候,注意代码质量
3. 精简前端资源
- 不要加载没用的CSS和JS
- 把多个CSS/JS文件合并成一个
- 能用CDN的就用CDN加载
记住:博客的核心是内容,不是花里胡哨的特效。简洁、快速、易读,才是好博客。
八、服务器层面优化
如果是自己的服务器,还可以从服务器层面做一些优化。
优化方向:
1. 用PHP7+甚至PHP8
PHP7比PHP5.6快了一倍都不止,PHP8又更快了。如果还在用PHP5.x,赶紧升级吧。
2. 开启OPcache
OPcache可以把PHP代码编译后缓存起来,不用每次请求都重新解析编译。
在php.ini里配置:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=603. 选择更好的Web服务器
- Nginx比Apache更轻量更快
- 可以考虑用LiteSpeed,速度更快
- 配合PHP-FPM,性能更好
4. 升级服务器配置
如果以上优化都做了还是慢,那可能就是服务器配置不够了。
- 内存至少1G起步,推荐2G以上
- 带宽不够的话,图片多了也会慢
- 有条件的话用SSD硬盘
优化效果检测
优化完之后,用这些工具测测速度:
- 站长工具:测速比较全面
- GTmetrix:可以看到详细的性能分析
- PageSpeed Insights:谷歌官方的工具
- 自己的浏览器F12,看Network面板
一般来说,首页加载时间控制在2秒以内就算不错了,1秒以内就是优秀。
写在最后
网站优化是一个持续的过程,不是一蹴而就的。先从最简单、性价比最高的开始做,比如开启Gzip、配置缓存、压缩图片,这几个做完就能有明显提升。
另外,优化也要适度,不要为了追求极致速度而牺牲用户体验。比如图片压缩得太厉害导致模糊,或者把必要的功能都砍掉了,那就得不偿失了。
希望这篇文章能帮你把博客速度提上来。你的博客做了哪些优化?效果怎么样?欢迎在评论区分享!
如果觉得这篇文章有用,欢迎分享给更多朋友~