Laravel 5 - 共享主机服务器中的清除缓存

Rin*_*rge 112 php command-line-interface laravel-5

问题很清楚.

php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)

是否有任何解决方法来清除缓存,就像我们在CLI中使用的那样.我正在使用流行的共享托管服务,但根据我的计划,我没有控制面板访问权限.

**我想清除视图缓存.**

我看到了一个与此几乎相同的问题,但它对我没有帮助.

提前致谢.

Mar*_*nte 129

您可以在CLI外部调用Artisan命令.

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    // return what you want
});
Run Code Online (Sandbox Code Playgroud)

你可以在这里查看官方文档 http://laravel.com/docs/5.0/artisan#calling-commands-outside-of-cli


更新

无法删除视图缓存.也php artisan cache:clear没有.

如果你真的想要清除视图缓存,我认为你必须编写自己的artisan命令并按照我之前的说法调用它,或者完全跳过artisan路径并清除从控制器或路由调用的某个类中的视图缓存.

但是,我真正的问题是你真的需要清除视图缓存吗?在我正在进行的项目中,我有近100个缓存视图,它们的重量不到1 Mb,而我的vendor目录大于40 Mb.我不认为视图缓存是磁盘使用的真正瓶颈,并且从未真正需要清除它.

对于应用程序缓存,它存储在storage/framework/cache目录中,但仅限file于您在其中配置驱动程序config/cache.php.您可以选择许多不同的驱动程序,例如RedisMemcached,以提高基于文件的缓存的性能.


The*_*Guy 45

我希望这可以帮助别人

转到laravelFolder/bootstrap/cache然后重命名config.php为您想要的任何内容,例如.config.php_old并重新加载您的网站.这应该像伏都教一样.

快乐编码......

  • 对于 Laravel 6.6,为了删除缓存,我刚刚删除了 `cache` 文件夹和 `.env` 文件中的默认缓存值。但是删除所有这些之后再次出现问题..当`php artisan optimization`时。最后这个解决了我的问题,不是通过重命名,而是更改 config.php 文件中的键值。谢谢@DeadGuy (2认同)

Fra*_*sco 44

我可以看到:http://itsolutionstuff.com/post/laravel-5-clear-cache-from-route-view-config-and-all-cache-data-from-applicationexample.html

是否可以使用下面的代码与新的清除缓存命令:

//Clear Cache facade value:
Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    return '<h1>Cache facade value cleared</h1>';
});

//Reoptimized class loader:
Route::get('/optimize', function() {
    $exitCode = Artisan::call('optimize');
    return '<h1>Reoptimized class loader</h1>';
});

//Route cache:
Route::get('/route-cache', function() {
    $exitCode = Artisan::call('route:cache');
    return '<h1>Routes cached</h1>';
});

//Clear Route cache:
Route::get('/route-clear', function() {
    $exitCode = Artisan::call('route:clear');
    return '<h1>Route cache cleared</h1>';
});

//Clear View cache:
Route::get('/view-clear', function() {
    $exitCode = Artisan::call('view:clear');
    return '<h1>View cache cleared</h1>';
});

//Clear Config cache:
Route::get('/config-cache', function() {
    $exitCode = Artisan::call('config:cache');
    return '<h1>Clear Config cleared</h1>';
});
Run Code Online (Sandbox Code Playgroud)

没有必要为每个人清除缓存,特别是在生产环境中,所以我建议评论路由,并在需要时,取消注释代码并运行路由.

  • 我发现这个片段最有帮助。 (2认同)

小智 38

配置缓存 laravel配置分布在几十个文件中,including每个请求的每个文件都是一个代价高昂的过程.要将所有配置文件合并为一个,请使用:

php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

请记住,对缓存后的配置所做的任何更改都不会产生任何影响.要刷新配置缓存,请再次运行上述命令.如果您想完全摆脱配置缓存,请运行

php artisan config:clear
Run Code Online (Sandbox Code Playgroud)

路由缓存 路由在laravel中也是一项昂贵的任务.要缓存routes.php文件,请运行以下命令:

php artisan route:cache
Run Code Online (Sandbox Code Playgroud)

请注意,它不适用于闭包.如果你正在使用闭包,这是一个很好的机会将它们移动到控制器中,因为artisan命令会在尝试编译绑定到闭包的路径而不是正确的控制器方法时抛出异常.与配置缓存相同,对routes.php的任何更改都不会有任何影响.要刷新缓存,请在每次更改路径文件时运行上面的命令.要完全摆脱路由缓存,请运行以下命令:

php artisan route:clear
Run Code Online (Sandbox Code Playgroud)

类图优化

中型项目分布在数百个PHP文件中并不罕见.由于良好的编码行为决定了我们,所有东西都有自己的文件.当然,这并非没有缺点.Laravel必须为每个请求包含许多不同的文件,这是一件昂贵的事情.

因此,一个好的优化方法是声明哪些文件用于每个请求(例如,所有服务提供者,中间件和更多),并将它们组合在一个文件中,然后为每个请求加载.这与将所有javascript文件合并为一个没有区别,因此浏览器必须减少对服务器的请求.

另外的编译文件(同样:服务提供者,中间件等)应该在config/compile.php中的files key中声明.一旦你把所有对你的应用程序发出的请求都放在那里,就把它们连接到一个文件中:

php artisan optimize --force
Run Code Online (Sandbox Code Playgroud)

优化作曲家自动加载

这个不仅适用于laravel,也适用于任何使用作曲家的应用程序.

我将首先解释PSR-4自动加载的工作原理,然后我会告诉你应该运行什么命令来优化它.如果您对了解composer的工作方式不感兴趣,我建议您直接跳转到console命令.

当你向作曲家询问App\Controllers\AuthController该类时,它首先在类图中搜索直接关联.classmap是一个包含类和文件的1对1关联的数组.当然,由于您没有手动将Login类及其关联文件添加到类映射中,因此编写器将继续并在命名空间中进行搜索.因为App是一个PSR-4命名空间,默认情况下是Laravel并且它与app/文件夹相关联,所以composer会尝试将PSR-4类名转换为带有基本字符串操作过程的文件名.最后,它猜测App\Controllers\AuthController必须位于一个AuthController.php文件中,该文件位于一个文件Controllers/夹中,幸运的是应该在命名空间文件夹中,即app/.

所有这些努力工作只是为了让App\Controllers\AuthController类存在于app/Controllers/AuthController.php文件中.为了让作曲家扫描整个应用程序并创建类和文件的直接1对1关联,请运行以下命令:

composer dumpautoload -o
Run Code Online (Sandbox Code Playgroud)

请记住,如果您已经运行了php artisan optimize --force,则不必再运行此工具了.由于optimize命令已经告诉composer创建一个优化的自动加载.


Afr*_*mad 26

这个包适用于php ^ 7.0和^ laravel5.5.

在我为此目的创建的cronjob中使用此包.我也面临同样的情况. https://packagist.org/packages/afrazahmad/clear-cached-data 安装并运行:

php artisan clear:data
Run Code Online (Sandbox Code Playgroud)

它将自动运行以下命令

php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

如果你想在特定时间自动运行它,那么你必须先设置crnjob.例如

 in app/console/kernel.php
Run Code Online (Sandbox Code Playgroud)

在计划功能:

$schedule->command('clear:data')->dailyAt('07:00');
Run Code Online (Sandbox Code Playgroud)


Lau*_*nce 17

基本上我想清除视图缓存.

现在Laravel 5.1中有一个命令

php artisan view:clear
Run Code Online (Sandbox Code Playgroud)


sta*_*sta 15

该命令将一次性清除所有类型的缓存。:

$ php artisan optimize:clear
Run Code Online (Sandbox Code Playgroud)

这是以下的别名:

$ php artisan view:clear
$ php artisan config:clear
$ php artisan route:clear
$ php artisan cache:clear
$ php artisan clear-compiled
Run Code Online (Sandbox Code Playgroud)

Laravel 5.7新增此方法


gan*_*404 8

您可以通过FTP连接和清除storage\framework\views文件夹for laravel 5app\storage\viewsfor laravel 4.


小智 6

清除CLI外部的所有缓存,请执行以下操作:这对我有用。

Route::get('/clear', function() {

   Artisan::call('cache:clear');
   Artisan::call('config:clear');
   Artisan::call('config:cache');
   Artisan::call('view:clear');

   return "Cleared!";

});
Run Code Online (Sandbox Code Playgroud)