dvaknheo
2020-10-11 14:22:18 +08:00
使用 CDN 访问静态资源(图片、JS 、CSS 文件)减轻带宽负载;
// 这个是 web 后端通用的优化。
服务器启用 PHP OPcache 扩展缓存 PHP 字节码;
// 还好,没碰见过 OPcache 的 bug 。
对于所有高频业务 SQL 查询,合理优化索引字段,提升数据库查询性能;
// [ 这项很重要。ORM 导致 SQL 不直观,所以懂 ORM 不懂 SQL 不行,你需要在写 ORM 的时候大致估摸着会生成什么 sql 。 我还见过后期加东西因为之前写的太复杂看不懂,直接在最前面加 where 的, 管他什么索引性能,完成产品策划的任务就行]
合理使用缓存,减少与 MySQL 服务器的交互,降低磁盘 IO ( Laravel 本身支持多种缓存驱动,可以非常方便地集成不同缓存系统,我这里使用的是 Redis 作为缓存驱动);
// 最懒惰的是 select * 对应的 cache 啦。不会出现同步问题。
PHP 本身不支持并发编程,但是可以引入队列系统异步处理耗时任务,比如邮件发送、涉及数据库操作的数据统计和更新、事件监听和处理等,通过多个队列进程实现并发处理效果( Laravel 本身支持多种队列驱动,可以非常方便地集成不同队列系统,并且提供了 Horizon 这一队列系统解决方案,我这里使用的是 Horizon + Redis + Supervisor 搭建小型队列系统);
// 对于小系统来说,用数据库队列安全可靠没必要折腾那么多。
通过 composer install --optimize-autoloader --no-dev 初始化项目依赖,以便加速 Composer 定位指定类对应的加载文件,同时不安装开发环境使用的依赖。
// 发布要用 mv -T 来做版本发布,方便回滚。发布的时候当然不是 每次都 composer install 啦,网络出问题怎么办。如果 composer.json 没变化,直接 copy vendor 目录就是。
发布脚本连带部署脚本一起跑