angelside wrote:View cache, sadece blade kodlarını php kodlarına dönüştürür, başka pek birşey yapmaz. Bu durumda sadece blade kodlarını dönüştüren regex, vb kodlarından tasarruf etmiş oluruz. Route -> Controller -> Model -> View katmanları yine çalışır.
Arkadaşın olayı direk route katmanında bitiyor, cache varsa route'dan öte gidilmiyor. Basit veya statik sayfalarda ciddi bir kazanç sağlayabileceğini düşünüyorum.
Paket kullanmak istemiyorsak, en iyi çözüm middleware gibi görünüyor. Tüm response içeriğini cache edebiliriz herhalde, hatta html kodlarını da sıkıştırabiliriz.
Route içinde bir cachleme kontrol edilmesi gibi işlemlerin yapılması Routes.php dosyasını çorbaya çevireceğini düşünüyorum. Bunun yerine sizin bahsettiğiniz gibi bir middleware sınıf ile çözümlenebilir. Bir sayfada değişiklik yok ise tüm sayfanın html hali denetleyicilere gitmeden response edilebilir. Ama bunun ciddi performans sağlayacağından şüpheliyim. Sonuç olarak laravel'deki cache sürücüsü "su yakmıyor" :D, Cachlenmiş bir html verisini sürücüden alıp response nesnesi ile istemiciye göderilmesi de bir yük getirir.
En iyi çözüm E-Tag'dir. Eğer söz konusu view katmanını hafifletmekse. Zira E-tag ile içeriğin değişmediğini istemciye söylerseniz
, istemci http protokolündeki header mesajını okuyacak. html document kısmını hiç okumayacak.
Bir middlevare sınıf ile var olan yapıyı bozmadan header'a E-Tag eklemek mümkün.. Bu durumda render edilen html veriği cachelemek ile uğraşmıyacaksınız. Sadece istenilen veride bir değişiklik olup olmadığını kontrol eden küçük bir middleware sınıfı yazacaksınız.
Şurda bir örnek var :
http://keltdockins.com/2014/05/23/etags-with-laravel-filters/
Ayrıca css ve js sciptlerini ayrı bir sunucuda ya da farklı bir subdominde servis etmek, E-Tag'leri daha kolay kullanılmasını(laravelden bağımsız, belki nginx ile) sağlar. Ortalama bir web sayfasının %60'dan fazlasını bunlar oluşturuyor zaten..
Programcılıkta bir çok çözüm var. Aklıma yatan en ideal yol bu gibi geliyor bana..