Laravel 5 ล้างมุมมองแคช


168

ฉันสังเกตว่ามุมมองแคช Laravel ถูกเก็บไว้ใน~/storage/framework/views.ช่วงเวลาหนึ่งพวกเขาจะกินพื้นที่ของฉัน ฉันจะลบพวกเขาได้อย่างไร มีคำสั่งใดบ้างไหม? ฉันพยายามแล้วphp artisan cache:clear,แต่ไม่ได้ล้างแคชมุมมอง ด้วยการที่ฉันต้องลบไฟล์ในโฟลเดอร์ดังกล่าวด้วยตนเอง

นอกจากนี้ฉันจะปิดการใช้งานมุมมองแคชได้อย่างไร?


3
"การทำงานล่วงเวลาพวกเขาจะกินพื้นที่ของฉัน" ไม่แน่ แอป Laravel ขนาดใหญ่ที่ฉันบำรุงรักษามีมุมมองแคชประมาณ 300KB ประมาณ 500 เส้นทาง คุณจะไม่มีวันหมดเนื่องจากการดูแคชบนเซิร์ฟเวอร์ที่ทันสมัย
ceejayoz

3
แต่ปัญหาคือผู้ให้บริการโฮสต์ของฉันไม่ได้ถูก จำกัด ด้วยการใช้พื้นที่ดิสก์ แต่จะ จำกัด ด้วยจำนวนไฟล์ที่คุณมี ดังนั้นมันจึงเป็นปัญหาสำหรับฉัน
basagabi

5
นั่นเป็นที่แปลกประหลาดและสองร้อยไฟล์ของคุณในเป็นอะไรต่อไปหลายพันไฟล์ในstorage/framework/views vendorรับโฮสต์ที่ไม่มีข้อ จำกัด บ้าคลั่งอย่างนั้น จำกัด จำนวนไฟล์หรือไม่ WTF ?!
ceejayoz

คุณช่วยแนะนำโฮสติ้งที่ยอดเยี่ยมสำหรับสิ่งนั้นได้ไหม แชร์โฮสติ้งที่ดีกว่า ฉันไม่แน่ใจว่าฉันได้รับอนุญาตให้แบ่งปันชื่อผู้ให้บริการโฮสต์ปัจจุบันของฉันหรือไม่ มันเป็น comany ใหญ่ แต่
basagabi

1
ฉันจะไปกับที่ไหนสักแห่งอย่าง Heroku ถ้าคุณไม่ใช่ช่างเทคนิคหรือ Amazon Web Services ถ้าคุณเป็น หากโฮสต์ปัจจุบันของคุณ จำกัด จำนวนไฟล์อย่างแท้จริงและไม่ใช่พื้นที่ที่ใช้ทั้งหมด
ceejayoz

คำตอบ:


278

ขณะนี้มีphp artisan view:clearคำสั่งสำหรับภารกิจนี้ตั้งแต่ Laravel 5.1


ดีที่ได้รู้. สิ่งหนึ่งที่ฉันสังเกตเห็นเมื่อเวลาผ่านไปแคชภายใต้โฟลเดอร์มุมมองจะถูกลบ มีบางอย่างในรหัสที่ลบออกใน xx วันหรือไม่
basagabi

ฉันเชื่อว่ามันใช้เวลานานกว่านั้น :)
Oddman

29

เพื่อให้ได้คำสั่งช่างทั้งหมดพิมพ์ ...

php artisan

หากคุณต้องการล้างแคชดูให้ใช้:

php artisan view:clear

หากคุณไม่ทราบวิธีการใช้คำสั่งช่างเฉพาะเพียงเพิ่ม "ช่วย" (ดูด้านล่าง)

php artisan help view:clear

11

โปรดลองคำสั่งด้านล่างนี้:

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache

2
ชงให้แน่ใจว่าคุณartisan config:cacheว่าตัวแปรทั้งหมดของคุณ.envมีการเข้าถึงผ่านconfig()ไม่env()ว่าจะเป็นโมฆะ
FlashJordan

1
@FlashJordan ฉันหวังว่าฉันจะอ่านความคิดเห็นของคุณก่อนที่จะใช้ config: แคช ฮ่า ๆ. สำหรับคนอื่น ๆ ที่รัน config: cache เหมือนคนตาบอดอย่างที่ฉันทำเพียงแค่ลบ config.php จาก bootstrap / cache
Tarek Adam

6

ตอนนี้ไม่มีมุมมอง: คำสั่งที่ชัดเจน สำหรับ laravel 4 สิ่งนี้อาจช่วยคุณได้: https://gist.github.com/cjonstrup/8228165

การปิดใช้งานการแคชสามารถทำได้โดยการข้ามใบมีด ดูแคชเสร็จแล้วเพราะใบมีดรวบรวมในแต่ละครั้งจะเสียเวลา


ฉันได้รับคำอธิบายที่ดีเกี่ยวกับเรื่องนี้stackoverflow.com/questions/31455829/…
Rinto George

6

หากต้องการตอบคำถามเพิ่มเติมของคุณวิธีปิดการใช้งานการดูแคช:

คุณสามารถทำได้โดยลบไฟล์ในโฟลเดอร์โดยอัตโนมัติสำหรับแต่ละคำขอด้วยคำสั่งที่php artisan view:clearกล่าวถึงโดย DilipGurung นี่คือตัวอย่างคลาส Middleware จาก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);
    }
}

อย่างไรก็ตามคุณอาจทราบว่า Larevel จะคอมไพล์ไฟล์ในโฟลเดอร์ / app / storage / views อีกครั้งเมื่อใดก็ตามที่เวลาในไฟล์มุมมองนั้นเร็วกว่าเวลาในไฟล์เบลด PHP สำหรับโครงร่าง ดังนั้นฉันไม่สามารถนึกถึงสถานการณ์ที่สิ่งนี้จะต้องทำ


2

ล้างแคชใน Laravel (เทอร์มินัล)

ล้างแคชแอปพลิเคชัน

php artisan cache:clear

ล้างแคชเส้นทาง

php artisan route:clear

ล้างแคชการกำหนดค่า

php artisan config:clear 

ล้างไฟล์มุมมองที่คอมไพล์แล้ว

php artisan view:clear 

ล้างแคชในเบราว์เซอร์ผู้ให้บริการโฮสต์ที่ใช้ร่วมกันส่วนใหญ่ไม่ได้ให้การเข้าถึงระบบ SSH ในกรณีดังกล่าวคุณสามารถล้างแคช Laravel ได้โดยเรียก URL ในเบราว์เซอร์ คุณสามารถวางรหัสด้านล่างในเส้นทาง / web.php ของคุณ

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

นี่คือลิงค์ทรัพยากรhttps://tecadmin.net/clear-cache-laravel-5/



0

นี่คือผู้ช่วยที่ฉันเขียนเพื่อแก้ปัญหานี้สำหรับโครงการของฉัน มันทำให้ง่ายสุด ๆ และง่ายต่อการล้างทุกอย่างออกอย่างรวดเร็วและด้วยคำสั่งเดียว

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


ดูเนมสเปซที่ใช้ ตรวจสอบให้แน่ใจว่ามันอยู่ในเส้นทางโฟลเดอร์ที่ถูกต้องหรือหากคุณเปลี่ยนมัน ตรวจสอบให้แน่ใจว่าคุณอัปเดตตามนั้น @samjadps
lzoesch

ฉันอัปเดตเนมสเปซในตอนท้าย ควรทำงานให้คุณโดยไม่ทำอะไรเลย ตรวจสอบให้แน่ใจว่าได้ตั้งค่าไว้ในโฟลเดอร์คอนโซล / คำสั่ง
lzoesch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.