Laravel 5 Wyczyść pamięć podręczną widoków

168

Zauważyłem, że widoki pamięci podręcznej Laravel są przechowywane w ~/storage/framework/views.Z biegiem czasu pochłaniają moją przestrzeń. Jak je usunąć? Czy jest jakieś polecenie, które mogłoby to zrobić? Próbowałem, php artisan cache:clear,ale nie czyści pamięci podręcznej widoków. Dzięki temu muszę ręcznie usunąć pliki w tym folderze.

Jak również wyłączyć buforowanie widoków?

basagabi
źródło
3
"Nadgodziny, mogą zająć moją przestrzeń." Mało prawdopodobne. Duża aplikacja Laravel, którą utrzymuję, ma około 300 KB widoków w pamięci podręcznej dla około 500 tras. Nigdy nie zabraknie Ci widoków z pamięci podręcznej na żadnym nowoczesnym serwerze.
ceejayoz
3
Problem polega jednak na tym, że mój dostawca hostingu nie ogranicza wykorzystania miejsca na dysku. Zamiast tego ogranicza liczbę posiadanych plików. Więc jest to dla mnie problem.
basagabi
5
To dziwne, a twoje kilkaset plików storage/framework/viewsto nic innego jak tysiące plików vendor. Zdobądź hosta, który nie ma takich absurdalnych, szalonych ograniczeń. Ograniczasz liczbę plików? WTF ?!
ceejayoz
Czy mógłbyś polecić do tego świetny hosting? Preferowany hosting współdzielony. Nie jestem pewien, czy mogę udostępniać nazwę mojego obecnego dostawcy usług hostingowych. Ale to duża firma.
basagabi
1
Wybrałbym miejsce takie jak Heroku, jeśli nie jesteś zbyt techniczny, lub Amazon Web Services, jeśli jesteś. Jeśli twój obecny host naprawdę ogranicza liczbę plików, a nie całkowitą używaną przestrzeń, są szalone.
ceejayoz

Odpowiedzi:

278

Istnieje teraz php artisan view:clearpolecenie dla tego zadania od wersji Laravel 5.1

DilipGurung
źródło
Dobrze wiedzieć. Zauważyłem, że z czasem pamięć podręczna w folderze widoków zostaje usunięta. Czy jest coś w kodzie, co usuwa je za xx dni?
basagabi
Wydaje mi się,
29

Aby uzyskać wszystkie polecenia rzemieślnika, wpisz ...

php artisan

Jeśli chcesz wyczyścić pamięć podręczną widoku, po prostu użyj:

php artisan view:clear

Jeśli nie wiesz, jak użyć konkretnego polecenia rzemieślnika, po prostu dodaj „pomoc” (patrz poniżej)

php artisan help view:clear
Jake Pucan
źródło
11

spróbuj tego polecenia:

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache
Mosam Prajapati
źródło
2
Ekspres pewien, czy artisan config:cacheto wszystko ze swoich .envzmiennych są dostępne przez config()nie env()albo oni być null.
FlashJordan
1
@FlashJordan Chciałbym przeczytać Twój komentarz przed uruchomieniem config: cache. lol. Dla każdego, kto uruchamia config: cache tak samo ślepo jak ja, po prostu usuń config.php z bootstrap / cache.
Tarek Adam
6

W tej chwili nie ma widoku: jasne polecenie. W przypadku laravel 4 to prawdopodobnie może ci pomóc: https://gist.github.com/cjonstrup/8228165

Wyłączenie buforowania można wykonać, pomijając blok. Buforowanie widoku jest wykonywane, ponieważ za każdym razem kompilowanie serwera blade jest stratą czasu.

ArjanSchouten
źródło
Mam dobre wyjaśnienie na ten temat tutaj stackoverflow.com/questions/31455829/...
Rinto George
6

Aby odpowiedzieć na dodatkowe pytanie, jak wyłączyć buforowanie widoków:

Możesz to zrobić, automatycznie usuwając pliki w folderze dla każdego żądania za pomocą polecenia php artisan view:clearwymienionego przez DilipGurung. Oto przykładowa klasa oprogramowania pośredniego z 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);
    }
}

Możesz jednak zauważyć, że Larevel przekompiluje pliki w folderze / app / storage / views za każdym razem, gdy czas wyświetlania plików widoków będzie wcześniejszy niż czas dla plików blokowych PHP dla układu. Dlatego naprawdę nie mogę wymyślić scenariusza, w którym byłoby to konieczne.

Adam
źródło
2

Wyczyść pamięć podręczną w Laravel (terminal)

Wyczyść pamięć podręczną aplikacji

php artisan cache:clear

Wyczyść pamięć podręczną tras

php artisan route:clear

Wyczyść pamięć podręczną konfiguracji

php artisan config:clear 

Wyczyść skompilowane pliki widoku

php artisan view:clear 

Wyczyść pamięć podręczną w przeglądarce Większość dostawców hostingu współdzielonego nie zapewnia dostępu do systemów za pomocą protokołu SSH. W takim przypadku możesz wyczyścić pamięć podręczną Laravel, wywołując URL w przeglądarce. Możesz po prostu umieścić poniższy kod w swoich route / web.php.

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

Oto link do zasobów https://tecadmin.net/clear-cache-laravel-5/

Hemant Kumar
źródło
1

użyj polecenia Below w terminalu

php artisan cache:clear
php artisan route:cache 
php artisan config:cache 
php artisan view:clear
Uddyan Semwal
źródło
0

Oto pomocnik, który napisałem, aby rozwiązać ten problem dla moich projektów. To sprawia, że ​​bardzo proste i łatwe jest wyczyszczenie wszystkiego szybko i za pomocą jednego polecenia.

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

lzoesch
źródło
Spójrz na używaną przestrzeń nazw. upewnij się, że znajduje się w poprawnej ścieżce folderu lub jeśli został zmieniony. upewnij się, że odpowiednio ją zaktualizujesz. @samjadps
lzoesch
Zaktualizowałem przestrzeń nazw po mojej stronie. Powinien działać teraz, nie robiąc nic. Po prostu upewnij się, że jest ustawiony w folderze console / commands.
lzoesch