php artisan optimize:clear VS. cache:clear

TL;DR php artisan optimize ukládá do mezipaměti konfiguraci, trasy, události a pohledy. jako soubory in /storage/framework a dělá ne dotkněte se ovladače mezipaměti. php artis...

Poptat web

17. 10. 2025

php artisan optimize:clear VS. cache:clear

TL;DR

  • php artisan optimize ukládá do mezipaměti konfiguraci, trasy, události a pohledy. jako soubory in /storage/framework a dělá ne dotkněte se ovladače mezipaměti.

  • php artisan cache:clear splachuje pouze ovladač mezipaměti aplikace (Redis, DB atd.) a neodstraní soubory optimalizace.

  • php artisan optimize:clear odstraní soubory optimalizace a vymaže data ovladače z mezipaměti a sestavené třídy. Použijte --except nebo jednotlivé příkazy pro vymazání, pokud chcete odstranit pouze určité mezipaměti. Nepochopení těchto rozdílů může způsobit zbytečné nebo nesprávné operace při nasazení Laravelu.

Příběh tohoto článku

V jednom z mých příspěvky na blogu, došlo k nedorozumění ohledně toho, co některé příkazy Laravel Artisan dělají v zákulisí. V tom příspěvek na blogu, jsem se podělil o vlastní skript pro nasazení systému Laravel, který obsahoval následující dva příkazy v tomto pořadí:

# Optimize view, routes, events, configs
php artisan optimize
 
# Clear caches
php artisan cache:clear

To vyvolalo mnoho kritiky. Mnozí se domnívali, že výše uvedené příkazy jsou prováděny ve špatném pořadí:

  1. První příkaz ukládá určitá data do mezipaměti.
  2. Druhý příkaz odstraní to, co bylo uloženo do mezipaměti prvním příkazem.

To je však nedorozumění.

php artisan cache:clear vs. optimize vs. optimize:clear

Podívejme se nejprve na to, jak Laravel tyto příkazy definuje:

  • php artisan cache:clear - Vypláchne mezipaměť aplikace.

  • php artisan optimize - Při nasazení aplikace do produkčního prostředí by měla být do mezipaměti uložena celá řada souborů, včetně konfigurace, událostí, tras a pohledů. Laravel poskytuje jediný, pohodlný optimize Artisan, který všechny tyto soubory uloží do mezipaměti.

Obě definice používají slovo "cache", ale týkají se zcela odlišných věcí. Začněme s optimize příkaz.

Na stránkách optimize příkaz ukládá do mezipaměti události, konfigurace, trasy a pohledy. v souborech. Neinteraguje s vaším skutečným ovladačem mezipaměti (např. Redis, databáze, Memcached atd.). Všechny soubory mezipaměti generované pomocí optimize jsou uloženy v adresářích v rámci /storage/framework adresář. To znamená, že php artisan optimize a php artisan cache:clear nemají žádný vztah.

Pokud vás zajímá, jak odstranit soubory mezipaměti vytvořené nástrojem optimize bohužel neexistuje konkrétní příkaz, který by umožňoval pouze tuto činnost.

Na stránkách php artisan cache:clear příkaz pouze propláchne data z ovladačů mezipaměti, nezasahuje do souborů mezipaměti vytvořených pomocí optimize příkaz.

Co dělá php artisan optimize:clear jasné?

K dispozici je také php artisan optimize:clear příkaz. Tento příkaz však dělá víc než jen odstraňuje soubory mezipaměti vytvořené příkazem optimize; také odstraní zkompilované třídy a propláchne data ze skutečného ovladače mezipaměti.

Jak vysvětluje Laravel:

Na stránkách optimize:clear lze použít metodu pro odstranění všech mezipamětí vygenerované pomocí optimize a také všechny klávesy v výchozího ovladače mezipaměti.

Odstraní všechny soubory vytvořené pomocí optimize propláchne mezipaměť aplikace a odstraní zkompilované třídy.

To znamená, že optimize:clear provádí další úkoly, které možná nechcete. Pokud je vaším cílem odstranit pouze soubory mezipaměti vytvořené pomocí optimize, budete muset příslušné příkazy Artisanu spustit ručně nebo použít příkaz --except příznak s optimize:clear příkaz:

php artisan optimize:clear --except=cache,compiled
 
# OR
 
php artisan view:clear
php artisan route:clear
php artisan event:clear
php artisan config:clear

Závěr

Je důležité pochopit rozdíl mezi php artisan cache:clear, php artisan optimizea php artisan optimize:clear aby nedocházelo ke zbytečným zmatkům. Všechny tyto příkazy sice zahrnují "cache", ale týkají se zcela odlišných věcí. Nepochopení jejich účelu může vést ke zbytečným operacím nebo dokonce k nechtěným problémům při nasazení. Když budete vědět, co který příkaz dělá a nedělá, můžete se pro své projekty Laravel rozhodovat lépe. Při příštím nasazení tak budete přesně vědět, co se děje v zákulisí.

Původní článek publikoval Nabil Hassen.