在Laravel 5.5.42中,当我设置基本的API路由(api.php)并尝试访问该端点时,Laravel似乎想从.ENV中读取。
对于示例,当我遇到基本的API路由/端点时,Laravel尝试从.env文件中读取值(例如,为会话状态服务器读取值等)。我不希望它对某些API路由执行此操作。
为什么它在不需要会话服务器时会尝试从.ENV中读取内容呢?该路由没有任何身份验证。
我感到Laravel在每次请求时都会启动一些内部工作。对于这样的简单路线,我怎么能做到呢?
例如,这是我的路线:
Route::get('/something', function() {
response('', 200)
->header('Content-Type', 'text/plain');
});
答案 0 :(得分:1)
配置数据不仅仅用于会话。通常,读取.env会将数据加载到各种配置文件中。
缓存配置,然后将不再根据请求读取配置文件和.env文件。
php artisan config:cache
答案 1 :(得分:1)
请求生命周期如下:
这是我们停止的地方。此时,如果尚未引导应用程序,则将执行以下操作:
$this->make(\Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables::class)->bootstrap($this)
此类的bootstrap
函数是读取环境变量的地方。正如@Devon所说,如果已缓存,它将不会读取,否则,它将从此处读取。
所以我想回答你的问题,是的。您可以运行:
php artisan config:cache
不会在每个请求中都读取它。但是,我认为session
和env
是什么之间没有联系。
答案是没有直接关联。 .env
文件只是应用程序可以重复使用的变量的列表-或-用于配置应用程序的各个方面。该处理的开销非常小(在〜500线环境下在〜1ms时进行了测试)。您不必担心这种微优化水平。