Merhabalar,
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 Illuminate\Database\Seeder; use App\Address; class AddressesTableSeeder extends Seeder { public function run() { $faker = Faker\Factory::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 App\Http\Controllers; use App\Address; 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 App\Http\Controllers; use App\Address; use Illuminate\Support\Facades\Cache; 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.
İyi çalışmalar.
Yorumlar Henüz yorum yapılmamış
Yeni Yorum