Bu yazıda Laravel'de Cache kullanımından bahsedeceğim. Projenizde cache kullanmanız, uygulamanızın hem daha performanslı çalışmasını hem de sunucuya ve veritabanına bindirilen yükü azaltmanızı sağlayacaktır.

 

Cache kullanımını örnekleyecek olursak;

 

İlk olarak yeni bir Laravel projesi oluşturuyoruz. Sonrasında Xampp yardımıyla yerelde bir veritabanı oluşturuyoruz. Projemizin .env dosyasında veritabanı bilgileri için gerekli düzenlemeleri yapıyoruz. Veritabanı tablomuzu oluşturmak adına bir migration tanımlıyoruz;

php artisan make:migration create_addresses_table

 

Migration içeriği;

public function up() {    Schema::create('addresses', function (Blueprint $table) {        $table->bigIncrements('id');        $table->text('address');        $table->timestamps();    }); }

 

Tanımladığımız migration'ı çalıştırıyoruz:

php artisan migrate

 

Tablomuzu temsil etmesi adına model dosyamızı oluşturuyoruz:

php artisan make:model Address

 

Test verileri elde etmek adına seeder oluşturuyoruz:

php artisan make:seeder AddressTableSeeder

 

Seeder içeriği;

<?php use IlluminateDatabaseSeeder; use AppAddress; class AddressesTableSeeder extends Seeder {    public function run()    {        $faker = FakerFactory::create();        for ($i = 0; $i < 100; $i++) {            Address::create([                'address' => $faker->address            ]);        }    } }

 

Oluşturduğumuz seeder'ı database/seeds/DatabaseSeeder.php dosyasında çağırıyoruz:

public function run() {    $this->call(AddressesTableSeeder::class); }

 

Ve çalıştırarak test verilerimizi elde ediyoruz:

php artisan db:seed

 

Tüm adresleri getirmek için bir route tanımlaması yapıyoruz:

Route::get('addresses', 'AddressController@index');

 

Route kısmında tanımlanan isteği karşılamak adına controller dosyamızı oluşturuyoruz:

php artisan make:controller AddressController

 

Öncelikle cache kullanmadan test edelim;

 

Controller içeriği;

<?php namespace AppHttpControllers; use AppAddress; class AddressController extends Controller {    public function index()    {        $addresses = Address::all();        return response()->json($addresses);            } }

 

Projemizi ayağa kaldırıyoruz;

php artisan serve

 

Postman üzerinden test ediyoruz;

 

Şimdi de cache kullanıp test edelim;

 

Controller içeriği;

<?php namespace AppHttpControllers; use AppAddress; use IlluminateSupportFacadesCache; class AddressController extends Controller {    public function index()    {        $addresses = Cache::get('addresses', function () {            return Address::all();        });        return response()->json($addresses);      } }

Not: Burada yapılan işlem; cache içerisinde addresses isimli bir key varsa onun içeriğini getir, yoksa veriyi tablodan getir ve addresses isimli key'e kaydet.

 

Postman üzerinden test ediyoruz;

 

Görüldüğü üzere sonuç daha hızlı bir şekilde geldi. Biz bu örneğimizde 100 tane test verisi üzerinden gittik ve hız artışı elbette çok fazla belli olmadı. Projenin büyüdüğünü ve verinin 100.000 gibi sayılara çıktığını düşündüğümüzde hız artışı daha iyi bir şekilde görülecektir.

 

Cache kullanımıyla ilgili olarak şunlara da değinelim;

  • Cache'in olup olmadığını kontrol etmek için;

if (Cache::has('key')) {
...
}
Cache'i belli bir süreliğine (dakika bazında) kaydetmek için;
$addresses = Cache::remember('addresses', 60, function () {
   return Address::all();
});
Cache'i silmek için;
Cache::forget('key');

 

Umarım faydalı olmuştur.