默认情况下,Laravel的雄辩模型设置为延迟加载。问题是它对数据库进行了大量查询,尤其是在高流量期间,laravel应用程序崩溃,而Yii 1上的类似应用程序构建没有问题。
安装 Laravel 的调试栏后,问题是每次页面加载时都会进行太多查询。下一步是查询优化。我一直按照 Laravel 文档中的指示使用热加载,但查询仍然太多。
我想知道是否有办法在开发环境中将 Eloquent 设置为仅"渴望加载"。这样,当页面加载失败时,识别问题会更容易。
您可以直接在模型上将默认关系设置为"预先加载":
Class MyModel extends Model {
protected $with = ['relation'];
}
高数据库负载的解决方案是缓存。
正确缓存可以在高流量期间为您提供令人难以置信的性能,因为它将常见的数据库查询减少到零,并将它们重定向到更快的 RAM 查询。
启用路由缓存也会提高性能:
php artisan route:cache
编辑:
正如 Fx32 点一样,您应该确保您需要 Eloquent 并且最好直接对数据库进行相同的查询,连接您需要的表并进行单个查询而不是很多查询:
缓存不是修复错误数据库查询的好解决方案。 雄辩很棒,但通常最好使用 有些加入。不要只是猛击你的数据库,然后扔掉所有的 导致缓存,因为它会带来新问题。如果您使用 案例不是平面 CRUD API,ActiveRecord 模式可能不是 无论如何,最好的解决方案。如果您仔细选择并加入来自 数据库,并希望加快此类项目的检索速度,缓存可以 帮助。