2012-02-09 24 views
5

Sayfamda, sayfanın bir örneğidir, önbellek almak istediğim, çok miktarda kaynak gerektiren bölümler var.PHP Sayfanın belirli bölümlerini önbelleğe alma

[=== Some Static HTML ===] 
[=== PHP Script 1 ===] 
[=== Some Static HTML ===] 
[=== PHP Script 2 ===] 
Ben bütün senaryoyu işleme yerine onu bir önbellek dosyası örneğin script1.html içine "PHP Script 1" koymak ve dahil etmek istiyoruz

ve script 2.

Ben sorun aynı sayfanın tamamını kolayca önbelleğe alabilir ve çalışır ancak belirli bölümleri (yukarıdaki gibi) önbelleğe almak istiyorum çünkü kullanıcı oturum verileri gibi bazı şeylerin canlı olması gerekiyor.

Bu sınıfı, arabayı durdurabilmek ve başlatmak için kullanacağım, böylece sayfanın geri kalan kısmını kırmadan belirli parçaları çekebiliyorum, ancak istediğimi yapmıyor. http://pastebin.com/Ua6DDExw

Aşağıdaki gibi ilerlemek isterim, ancak veritabanına isabet etmek yerine basit bir php inlcude ile bir dosyada bölüm depolar.

HTML Content 

<?php 
$cache->start_buffer("cache_name"); 
// PHP Script 
$cache->end_buffer("cache_name"); 
?> 

HTML Content 

<?php 
$cache->start_buffer("cache_name"); 
// PHP Script 
$cache->end_buffer("cache_name"); 
?> 

bu paylaşılan barındırma olacak çünkü ben böyle memcache'den erişimi veya başka bir şey yok.

Herhangi bir yardım çok iyi olurdu, Teşekkür

ob_start() ve ob_flush() kullanarak içine
+1

Herkesten bazı fikirler var mı? –

cevap

4

bakmak Size ne yapmak istiyorsunuz onu yapar. Bir dosyaya el ile yazmanız gerekir. Vahşi ortamda da cache.php sınıfları var.

http://php.net/manual/en/function.ob-start.php

<?php 

    $cache_time = 3600; // Time in seconds to keep a page cached 
    $cache_folder = '/cache'; // Folder to store cached files (no trailing slash) 

    // Think outside the box the original said to use the URI instead use something else. 
    $cache_filename = $cache_folder.md5(",MyUniqueStringForMyCode"); // Location to lookup or store cached file 

    //Check to see if this file has already been cached 
    // If it has get and store the file creation time 
    $cache_created = (file_exists($cache_file_name)) ? filemtime($this->filename) : 0; 

    if ((time() - $cache_created) < $cache_time) { 
    $storedData = readCacheFile($cache_filename); 
    } 
    else 
    { 

    // Alternatively you can ignore the ob_start/get_contents/end_flush code 
    // and just call a function and store it directly to the variable. 
    // Start saving stuff 
    ob_start(); 

    /** do your work here echoing data to the screen */ 

    $storedData = ob_get_contents(); 
    ob_end_flush(); 

    // create the cachefile for the data. 
    createCacheFile($cache_filename); 
    } 


    // Do stuff with $storedData. 
+0

Teşekkür ederim, biraz daha araştırma yapacağım. Tüm farklı tamponlama işlevlerini anlamakta zorlanıyordum. –

+2

Bu eğiticiyi deneyin, tam olarak ne yapmak istediğinizi açıklar. http://www.mikebernat.com/blog/Caching_PHP_Pages_with_Output_Buffering – thenetimp

+0

Bu tut/komut dosyası yalnızca tüm sayfayı önbelleğe almaya çalışıyorumsa çalışacaktır. Lütfen sorumu tekrar oku. –

İlgili konular