Kategoriler
Kodlama

Basitçe bir sayfayı PHP ile Cache almak

Bu yazıda, web sayfalarınız için basit bir PHP önbellekleme sisteminin nasıl yapılacağını göstereceğim.

Bir php dosyanız var ve içerisinde birçok kod veya Mysql sorgusu çalışıyor, dolayısıyla açılırken yavaş açılmakta. Bunu çözmek sayfayı hızlılandırmak için PHP önbellek uygulamasını kullanmak son derece faydalı olacaktır.

Önbellek nedir?
Sayfayı önbelleğe alma/Cache, orijinal verilerin getirilmesi veya hesaplanması zor ve uzun olduğunda (genellikle erişim süresi, sayfa bekleme süresi açısından) yinelenen verilerden oluşan bir koleksiyon oluşturmaya çalışan bir tekniktir. PHP programlama dili sunucunun bir PHP sayfası her istendiğinde her bir kodu tek tek yürütmesi gerekir. Komut dosyasının karmaşıklığına ve uzunluğuna bağlı olarak, bu işlem zaman alabilir ve çok fazla kaynak gerektirebilir. Web sitenizde çok fazla trafik varsa, sunucunuzu ve sitenizi gerçekten yavaşlatabilir.

Bir web sayfası önbelleğe alınmışsa, komut dosyası ilgili önbellek dosyasının var olup olmadığını kontrol edecektir. Varsa, statik, önbelleğe alınmış dosya ziyaretçinin tarayıcısına gönderilecektir. Değilse, dinamik sayfanın statik bir versiyonu, bir ziyaretçi tarafından ilk talep edildiğinde otomatik olarak oluşturulacaktır. Dinamik sayfaların statik bir sürümünü oluşturarak, önbellekleme sistemi, PHP betiği sayfa her istendiğinde çalıştırılmak yerine yalnızca bir kez yürütüldüğünden çok sayıda sunucu kaynağından tasarruf sağlar. Önbellek dosyalarının, geliştirici tarafından belirlenen belirli bir kullanım ömrü vardır. Tanımlanan ömür aşılırsa, sunucu PHP betiğini çalıştıracak ve ardından yeni bir önbelleğe alınmış sürümünü oluşturacaktır.

Şimdi Cache sistemimizi oluşturalım

2 ek dosya oluşturuyoruz, 1. top-cache.php 2. bottom-cache.php, top-cache.php içeriği aşağıdaki gibi:

<?php
$url = $_SERVER["SCRIPT_NAME"];
$break = Explode('/', $url);
$file = $break[count($break) - 1];
$cachefile = 'cached-'.substr_replace($file ,"",-4).'.html';
$cachetime = 18000;

// Serve from the cache if it is younger than $cachetime
if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)){
    echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n";
    readfile($cachefile);
    exit;
}
ob_start(); // Start the output buffer
?>

bottom-cache.php içeriği aşağıdaki gibi:

<?php
// Cache the contents to a cache file
$cached = fopen($cachefile, 'w');
fwrite($cached, ob_get_contents());
fclose($cached);
ob_end_flush(); // Send the output to the browser
?>

Son olarak sayfamızı Cache sistemine dahil edelim, bunun için örnek aşağıdaki gibi:

<?php
 include('top-cache.php'); ?>

Bu alan sizin php dosyanızın içeriği.

<?php include('bottom-cache.php');
 ?>

Yani Cachelenmesini istediğiniz php dosyası içerine başlangıçta top-cache.php dosyasını sonuna da bottom-cache.php dosyasını include ettiğinzde PHP sistemi o dosyanın önbelleğini oluşturacak ve ziyaretçiye eğer varsa önbellekteki dosyayı yoksa önbelleği oluşturup öyle gösterecek.

PHP Cache sunucunuzda normal şartlarda etkindir ancak değilse eya eski bir PHP sürümü kullanılıyorsa hosting firmanıza OpCode caching aktif edilmesi için başvurmanız gerekebilir. WordPress sitelerin Cache eklentileri de aynı şekilde çalışmaktadır fakat biraz daha gelişmiş seçenekler sunarlar, bu basitçe herhangi bir dosyanın önbelleklenmesi için yazılmış bir koddur.

Hepsi bu kadar, belki ihtiyaç olabilir diye paylaştım bir kenarda dursun, afiyet olsun.

Ek olarak arkadaşlar sitenin WordPress ise ve hosting sunucunuz LiteSpeed destekliyorsa kesinlikle LiteSpeed Cache eklentisini kullanın, eğer sunucunuzda LiteSpeed desteği yoksa ki bu bazen olabilir o durumda da benim önerim WP-Optimize eklentisidir. Yukarıdaki basit cache uygulamam bir eklenti değil sadece gerektiğinde dış sayfalarda farklı durumlarda kullanmak içindir.