Cache konten keluaran Cache PEAR
Selanjutnya kita mulai mengeksplorasi teknologi caching yang lebih umum digunakan, yang juga menjadi fokus artikel ini. Pertama kita menggunakan paket cache di PEAR. PEAR dapat menyimpan konten dalam cache dalam file, database, atau memori. Mari kita ambil file sebagai contoh.
Berikut ini program PHP kecil yang tidak menggunakan caching:
pear_content_cache1.php
<?php
echo "Ini isinya. <P>";
echo "Waktu saat ini adalah" . date('MdY H:i:s A', time()) "<BR>";
?>
Program di atas sangat sederhana, sekarang kita tambahkan caching ke dalamnya.
pir_content_cache2.php
<?php
require_once 'Cache/Output.php';
//Setel direktori cache, yang harus dapat ditulisi $cacheDir = './pear_cache';
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
//Jika variabel nocache kosong, gunakan konten di cache //Jika Anda ingin mendapatkan konten terbaru, tetapkan ke variabel nocache if (kosong($_REQUEST['nocache']))
{
// Buat ID cache unik // Permintaan + Informasi cookie $cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS) );
}
kalau tidak
{
//Jika ingin mendapatkan konten terbaru, ID-nya kosong $cache_id = null;
}
//Periksa apakah konten cache yang sesuai dengan ID cache tersedia jika ($content = $cache->start($cache_id))
{
//Cache sudah ada, keluarkan secara langsung, dan akhiri skrip echo $content;
KELUAR();
}
// Konten tidak ada di cache, buat konten baru dan tulis ke cache echo "Ini kontennya. <P>";
echo "Waktu saat ini adalah" . date('MdY H:i:s A', time()) "<BR>";
// Tulis konten ke cache echo $cache->end();
?>
Refresh kedua file ini masing-masing, dan Anda akan menemukan bahwa waktu pada baris "Waktu saat ini" di pear_content_cache1.php berubah seiring dengan penyegaran, sedangkan baris ini di pear_content_cache2.php tidak berubah. Hal ini karena pear_content_cache2.php menggunakan caching untuk menyimpan konten yang diminta oleh pengguna dalam file statis. Ketika pengguna meminta lagi, itu akan dikeluarkan langsung dari file tanpa memerlukan program untuk menghasilkan konten secara dinamis.
Untuk pear_content_cache2.php, jika pengguna ingin membaca informasi terbaru, bukan informasi lama di cache. Kemudian Anda dapat mengaksesnya dengan http://…/pear_content_cache2.php?nocache=1 , yang akan menonaktifkan fungsi caching. Segarkan dan lihat bahwa waktunya akan berubah.
Untuk meringkas penggunaan kelas cache konten PEAR:
1. Saat menyertakan paket PEAR, pastikan untuk menyetel jalur yang benar.
2. Berisi kelas cache di Output.php
require_once 'Cache/Output.php'
; Setel direktori cache
$cacheDir = './pear_cache';
konfirmasikan bahwa direktori ini dapat ditulis. Data cache akan ditulis ke subdirektori direktori ini.
4. Buat objek cache keluaran
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
Parameter pertama menunjukkan bahwa kita menggunakan cache berdasarkan metode "file", dan parameter kedua adalah a cache Array yang terkait dengan direktori.
5. Hasilkan ID cache unik
$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));
Di sini generateID dari objek $cache ( ) metode dengan menyediakan serangkaian informasi (URL, data HTTP POST, dan cookie HTTP) untuk mengidentifikasi permintaan ini secara unik dan membedakannya dari permintaan lainnya.
6. Tambahkan pernyataan penilaian logis untuk melihat apakah data cache yang terkait dengan cacheID sudah ada. Jika sudah ada, dapatkan data dan akhiri skrip.
if ($konten = $cache->mulai($cache_id))
{
gema $konten;
KELUAR();
}
7. Tempatkan kode yang menghasilkan konten setelah pernyataan logis di atas dan akhiri dengan menggunakan objek cache.
echo $cache->end();
fungsi cache keluaran PEAR cache
PEAR tidak hanya dapat menyimpan konten keluaran dalam cache, tetapi juga menyimpan hasil pemanggilan fungsi tertentu. Ini adalah fitur yang sangat menarik. Jika program Anda sering menggunakan fungsi tertentu dan hasil pemanggilannya sama, saya sarankan Anda mencobanya, terutama jika fungsi ini berjalan lambat.
Selanjutnya kita mengimplementasikan panggilan buffer ke slowFunction(), sebuah fungsi yang dijalankan dengan sangat lambat.
<?php
require_once 'Cache/Fungsi.php';
$cacheDir = './pear_cache/';
$cache = new Cache_Function('file',array('cache_dir' => $cacheDir));
$arr = array('apel', 'pir', 'semangka');
$cache->panggilan('Fungsi lambat', $arr);
echo '<BR>';
$arr = array('apel', 'pir', 'semangka');
fungsi lambat($arr);
fungsi fungsi lambat($arr = null)
{
echo "Fungsi yang dijalankan sangat lambat: ( <br>";
echo "Waktu saat ini adalah" .date('MdY H:i:s A', time()) '<br>';
foreach ($arr sebagai $buah)
{
echo "Saya makan $buah <br>";
}
)
?>
Berikut contoh hasil eksekusi script:
fungsi yang dijalankan sangat lambat.
Waktu saat ini adalah 28 Juli 2004 17:15:57 PM
Saya makan apel, saya makan pir, saya makan semangka
Fungsi yang berjalan sangat lambat :(
Waktu saat ini adalah 28 Juli 2004 17:17:55
Saya makan apel Saya makan pir Saya makan semangka
Dalam kode tersebut, kelas Cache/Function.php digunakan untuk menjalankan fungsi buffering. Variabel $cache adalah objek Cache_Function yang menggunakan fungsi caching berbasis file dan disimpan di direktori $cacheDir. Untuk melakukan cache pemanggilan fungsi, metode call() dari objek Cache_Function $cache harus digunakan seperti ini: $cache->call('slowFunction', $arr);
Di sini, fungsi slowFunction() dipanggil, dan parameternya adalah array $arr, Fungsi ini di-cache dalam file di direktori $cacheDir. Setiap panggilan selanjutnya ke fungsi ini akan menghasilkan hasil eksekusi fungsi yang dikembalikan oleh $cache->call(). Fungsi dan penggunaan caching sangat mirip dengan caching konten, jadi saya tidak akan menjelaskan secara detail. Silakan periksa manual PEAR untuk detailnya.