Laravel 5 Clear Views Cache

167

Ich stelle fest, dass Laravel-Cache-Ansichten im ~/storage/framework/views.Laufe der Zeit gespeichert werden und meinen Speicherplatz verschlingen. Wie lösche ich sie? Gibt es einen Befehl, der das könnte? Ich habe es versucht, php artisan cache:clear,aber es löscht nicht den Ansichts-Cache. Damit muss ich die Dateien in diesem Ordner manuell löschen.

Wie deaktiviere ich das Zwischenspeichern von Ansichten?

Basagabi
quelle
3
"Überstunden, sie dürfen meinen Platz auffressen." Unwahrscheinlich. Eine große Laravel-App, die ich pflege, verfügt über ca. 300 KB zwischengespeicherte Ansichten für ca. 500 Routen. Sie werden aufgrund von zwischengespeicherten Ansichten auf einem modernen Server nie ausgehen.
Ceejayoz
3
Das Problem ist jedoch, dass mein Hosting-Anbieter nicht durch die Speicherplatznutzung eingeschränkt wird. Stattdessen wird es durch die Anzahl der Dateien begrenzt, die Sie haben. Es ist also ein Problem für mich.
Basagabi
5
Das ist bizarr, und Ihre paar hundert Dateien storage/framework/viewssind nichts anderes als die Tausenden von Dateien in vendor. Holen Sie sich einen Host, der keine solchen absurden wahnsinnigen Einschränkungen hat. Begrenzung durch Anzahl der Dateien? WTF?!
Ceejayoz
Könnten Sie dafür ein großartiges Hosting empfehlen? Am liebsten Shared Hosting. Ich bin mir nicht sicher, ob ich den Namen meines aktuellen Hosting-Anbieters teilen darf. Es ist jedoch eine große Firma.
Basagabi
1
Ich würde mich für Heroku entscheiden, wenn Sie nicht zu technisch sind, oder für Amazon Web Services, wenn Sie es nicht sind. Wenn Ihr aktueller Host die Anzahl der Dateien und nicht den insgesamt verwendeten Speicherplatz wirklich begrenzt, sind sie verrückt.
Ceejayoz

Antworten:

277

php artisan view:clearSeit Laravel 5.1 gibt es jetzt einen Befehl für diese Aufgabe

DilipGurung
quelle
Gut das zu wissen. Eine Sache, die ich im Laufe der Zeit bemerke, ist, dass der Cache unter dem Ansichtsordner gelöscht wird. Gibt es etwas im Code, das sie in xx Tagen löscht?
Basagabi
Ich glaube, es ist schon ein bisschen länger her :)
Oddman
29

Geben Sie ein, um alle handwerklichen Befehle zu erhalten ...

php artisan

Wenn Sie den Ansichtscache leeren möchten, verwenden Sie einfach:

php artisan view:clear

Wenn Sie nicht wissen, wie man einen bestimmten Handwerkerbefehl verwendet, fügen Sie einfach "Hilfe" hinzu (siehe unten).

php artisan help view:clear
Jake Pucan
quelle
11

Bitte versuchen Sie diesen folgenden Befehl:

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache
Mosam Prajapati
quelle
2
Stellen Sie sicher, artisan config:cachedass auf alle Ihre .envVariablen zugegriffen wird config(), nicht env()oder sie sind null.
FlashJordan
1
@FlashJordan Ich wünschte, ich würde Ihren Kommentar lesen, bevor ich config: cache ausführe. lol. Für alle anderen, die config: cache so blind ausführen wie ich, löschen Sie einfach config.php aus bootstrap / cache.
Tarek Adam
6

Im Moment gibt es keine Ansicht: Befehl löschen. Für Laravel 4 kann dies wahrscheinlich hilfreich sein: https://gist.github.com/cjonstrup/8228165

Das Deaktivieren des Caching kann durch Überspringen des Blades erfolgen. Das Zwischenspeichern von Ansichten erfolgt, da das jedes Mal kompilierte Blade Zeitverschwendung ist.

ArjanSchouten
quelle
Ich habe eine gute Erklärung dazu hier stackoverflow.com/questions/31455829/…
Rinto George
6

So beantworten Sie Ihre zusätzliche Frage zum Deaktivieren des Zwischenspeicherns von Ansichten:

Sie können dies tun, indem Sie die Dateien im Ordner für jede Anforderung automatisch mit dem php artisan view:clearvon DilipGurung genannten Befehl löschen. Hier ist ein Beispiel für eine Middleware-Klasse von https://stackoverflow.com/a/38598434/2311074

<?php
namespace App\Http\Middleware;

use Artisan;
use Closure;

class ClearViewCache
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (env('APP_DEBUG') || env('APP_ENV') === 'local') 
            Artisan::call('view:clear');

        return $next($request);
    }
}

Sie können jedoch feststellen, dass Larevel die Dateien im Ordner / app / storage / views neu kompiliert, wenn die Zeit in den Ansichten-Dateien früher ist als die Zeit in den PHP-Blade-Dateien für das Layout. Daher kann ich mir kein Szenario vorstellen, in dem dies notwendig wäre.

Adam
quelle
1

Verwenden Sie den Befehl Below im Terminal

php artisan cache:clear
php artisan route:cache 
php artisan config:cache 
php artisan view:clear
Uddyan Semwal
quelle
1

Cache in Laravel löschen (Terminal)

Anwendungscache löschen

php artisan cache:clear

Löschen Sie den Routen-Cache

php artisan route:clear

Konfigurationscache löschen

php artisan config:clear 

Kompilierte Ansichtsdateien löschen

php artisan view:clear 

Cache im Browser löschen Die meisten Shared Hosting-Anbieter bieten keinen SSH-Zugriff auf die Systeme. In diesem Fall können Sie den Laravel-Cache löschen, indem Sie die URL im Browser aufrufen. Sie können einfach den folgenden Code in Ihre Routen / web.php einfügen.

Route::get('/clear-cache', function() {
    Artisan::call('cache:clear');
    return "Cache is cleared";
});

Hier ist der Ressourcenlink https://tecadmin.net/clear-cache-laravel-5/

Hemant Kumar
quelle
0

Hier ist ein Helfer, den ich geschrieben habe, um dieses Problem für meine Projekte zu lösen. Es macht es super einfach und leicht, alles schnell und mit einem einzigen Befehl löschen zu können.

https://github.com/Traqza/clear-everything

lzoesch
quelle
Schauen Sie sich den verwendeten Namespace an. Stellen Sie sicher, dass es sich im richtigen Ordnerpfad befindet oder wenn Sie es geändert haben. Stellen Sie sicher, dass Sie es entsprechend aktualisieren. @samjadps
lzoesch
Ich habe den Namespace an meinem Ende aktualisiert. Sollte jetzt für Sie arbeiten, ohne etwas zu tun. Stellen Sie einfach sicher, dass es im Konsolen- / Befehlsordner festgelegt ist.
lzoesch