2012-02-09 11 views
5

मेरे पास ऐसे पृष्ठ पर अनुभाग हैं जिनके लिए उचित संसाधनों की आवश्यकता होती है, जिन्हें मैं कैश करना चाहता हूं, यहां पृष्ठ का एक उदाहरण है।PHP कैश पृष्ठ के विशिष्ट हिस्सों

[=== Some Static HTML ===] 
[=== PHP Script 1 ===] 
[=== Some Static HTML ===] 
[=== PHP Script 2 ===] 

मैं पूरी स्क्रिप्ट प्रसंस्करण के बजाय एक कैश फ़ाइल जैसे script1.html में "पीएचपी स्क्रिप्ट 1" रख दिया और यह शामिल करना चाहते हैं, और स्क्रिप्ट 2.

समस्या मेरे पास है

के लिए एक ही क्या मैं पूरे पृष्ठ को आसानी से कैश कर सकता हूं और यह काम करता है लेकिन मैं केवल विशिष्ट भागों (ऊपर के रूप में) को कैश करना चाहता हूं क्योंकि उपयोगकर्ता सत्र डेटा जैसी कुछ चीजें लाइव होने की आवश्यकता होती है।

मेरे पास यह वर्ग है जो बफर को रोकने और शुरू करने में सक्षम होने के लिए है ताकि मैं शेष पृष्ठ को तोड़ने के बिना विशिष्ट हिस्सों को खींच सकूं, हालांकि यह वही नहीं करता जो मैं चाहता हूं। http://pastebin.com/Ua6DDExw

मैं नीचे इस तरह से जाने में सक्षम होना चाहता हूं, जबकि यह फ़ाइल को एक साधारण php inlcude के साथ फ़ाइल में संग्रहीत करेगा बल्कि डाटाबेस को मार देगा।

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"); 
?> 

मुझे memcache या ऐसा कुछ भी नहीं है क्योंकि यह साझा होस्टिंग पर जा रहा है।

किसी भी मदद की बहुत अच्छा होगा, धन्यवाद

+1

किसी और को कुछ विचार है? –

उत्तर

4

ob_start() और ob_flush() का उपयोग करते हुए नज़र यह आप क्या करना चाहते हैं क्या करता है। आपको इसे फ़ाइल में मैन्युअल रूप से लिखना होगा। जंगली में कैश.एचपी कक्षाएं भी हैं।

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

धन्यवाद, मैं कुछ और शोध करूँगा। मुझे सभी अलग-अलग बफरिंग कार्यों को समझने में कठिनाई हो रही थी। –

+2

इस ट्यूटोरियल को आजमाएं, यह बताता है कि आप वास्तव में क्या करना चाहते हैं। http://www.mikebernat.com/blog/Caching_PHP_Pages_with_Output_Buffering – thenetimp

+0

वह टट/स्क्रिप्ट केवल तभी काम करेगी जब मैं पूरे पृष्ठ को कैश करने की कोशिश कर रहा हूं। कृपया मेरा प्रश्न दोबारा पढ़ें। –

संबंधित मुद्दे