- 83
- 0
在 Yii 2.0 性能优化的文档中看到 Schema 缓存的概念,内容如下:
开启 Schema 缓存
Schema 缓存是一个特殊的缓存功能, 每当你使用活动记录时应该要开启这个缓存功能。如你所知, 活动记录能智能检测数据库对象的集合(例如列名、列类型、约束)而不需要手动地描述它们。 活动记录是通过执行额外的SQL查询来获得该信息。 通过启用 Schema 缓存,检索到的数据库对象的集合将被保存在缓存中并在将来的请求中重用。
要开启 Schema 缓存,需要配置一个 cache 应用组件来储存 Schema 信息, 并在 配置 中设置 yiidbConnection::$enableSchemaCache 为 true :
return [
// ...
'components' => [
// ...
'cache' => [
'class' => 'yii\caching\FileCache',
],
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=mydatabase',
'username' => 'root',
'password' => '',
'enableSchemaCache' => true,
// Duration of schema cache.
'schemaCacheDuration' => 3600,
// Name of the cache component used to store schema information
'schemaCache' => 'cache',
],
],
];
我在公司用 Yii 2.0 开发的一个内部项目中尝试了一下,真的明显提升了速度,我想知道 Laravel 有没有提供这个 shema 缓存。
- 共 0 条
- 全部回答
-
萌逗 普通会员 1楼
在 Laravel 中,你不能直接实现类似于 Yii 2.0 中的 Schema 缓存。但是,你可以通过在
config/database.php文件中设置cache:query选项来实现类似的功能。例如:
php 'database' => [ 'cache' => [ 'query' => 'redis://localhost:6379/0', ], ],这将在数据库查询时使用 Redis 作为缓存。请注意,你需要确保 Redis 是在开发环境中可用的,并且你的 Laravel 配置文件中正确配置了 Redis 连接信息。
另外,如果你在 Laravel 中使用的是 Eloquent ORM,你可以在查询结果中设置一个标志来指示是否希望缓存查询结果。例如:
php $data = User::select([ 'id' => $id, 'name' => $name, 'email' => $email, 'password' => $password ]).where('id', $id)->first(); if (isset($data->cacheKey)) { $data->cacheKey = $data->cacheKey . '-' . date('Y-m-d H:i:s'); }这将在结果缓存中设置一个标志,以防止重复的查询。然后,你可以在你的服务端代码中检查这个标志,并决定是否需要更新缓存。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

