2008-08-06 11 views
9

वर्तमान में मुझे डेटा कैश करने के केवल दो तरीकों के बारे में पता है (मैं PHP का उपयोग करता हूं लेकिन मुझे लगता है कि यह ज्यादातर भाषाओं पर लागू होगा)।फ़ाइल या डेटाबेस के अलावा, कैशिंग के कौन से तरीके उपलब्ध हैं?

  1. एक बड़ी डीबी क्षेत्र

के लिए एक फ़ाइल

  • सहेजें कैश करने के लिए कैश सहेजें किसी अन्य (शायद बेहतर) कैशिंग के तरीके हैं या यह वास्तव में सिर्फ इस सरल है?

  • +0

    क्या आप इस प्रश्न को उचित शीर्षक दे सकते हैं? जैसे "कैशिंग डेटा के सर्वोत्तम तरीके क्या हैं?", "फ़ाइल या डेटाबेस के अलावा कैशिंग के कौन से तरीके उपलब्ध हैं?", या इसी तरह। –

    उत्तर

    2

    हो सकता है कि आप अधिक सटीक रूप से स्पष्ट करना चाहते हैं कि आप कैश करना चाहते हैं।

    • डाटा बेस तक पहुँचना आप डेटा जहां कैश पहले सही तरीके से अपने आरडीबीएमएस ट्यूनिंग, तो एक परत का उपयोग (AdoDB के साथ एक ही डेटा के लिए कई प्रश्नों का पता लगाने के निर्णय को सौंपने के लिए: आप इस सब के अवसरों को कैश करने के लिए है उदाहरण के लिए।)
    • कोड में लूप से गणना निकालने के लिए, इसलिए आप एक ही मान को कई बार गणना नहीं करते हैं। यहां आपका तीसरा तरीका: उपयोगकर्ता के लिए सत्र में परिणाम संग्रहीत करना।
    • APC Cache जैसे एक्सटेंशन के साथ PHP कोड प्रीकंपलिंग। इस तरह आपको प्रत्येक अनुरोध के लिए एक ही PHP कोड संकलित करने की आवश्यकता नहीं है।
    • यह पृष्ठ उपयोगकर्ता को पर भेजा गया यह सुनिश्चित करने के लिए कि आप सही मेटा टैग सेट कर रहे हैं (दुनिया के लिए अच्छी चीज करें और कम से कम पूरी तरह से आवश्यक ईटीएल का उपयोग न करें); या हो सकता है कि डायनामिक पेज पूरी तरह स्थिर हो जाएं (बैच प्रक्रिया है जो। एचटीएमएल पेज उत्पन्न करती है); या Squid जैसे प्रॉक्सी कैश का उपयोग करके।
    • प्रीफेचिंग और इसके द्वारा मैं उन सभी अवसरों को संदर्भित करता हूं जो आपको उपयोगकर्ता अनुभव को बेहतर बनाने के लिए करते हैं, जबकि उपयोगकर्ता आपका रास्ता नहीं देखता है। उदाहरण के लिए, HTML फ़ाइल में आईएमजी टैग पहले से लोड होने, prefectching के लिए आरडीबीएमएस ट्यूनिंग, मेरे अनुभव से डेटाबेस में जटिल गणनाओं के भंडारण के परिणाम, आदि

    precomputing, मैं तुम्हें यकीन हैं, जो आपके कोड एक सुधार किया जा सकता चीजों को कैशिंग करने के बारे में बात करने से पहले बहुत कुछ। उदाहरण के लिए, उदाहरण के लिए, आपकी साइट के नेविगेशन कितनी अच्छी तरह संरचित है और आप उपयोगकर्ता अनुभव को कितनी अच्छी तरह नियंत्रित करते हैं। फिर XDebug जैसे टूल के साथ अपना कोड देखें।

    सत्यापित करें कि आप अपने SQL क्वेरी कितनी अच्छी तरह से बना रहे हैं और आप अपनी तालिकाओं को कितनी अच्छी तरह से अनुक्रमणित कर रहे हैं। फिर नियम लागू करने के अवसरों को देखने के लिए फिर से अपना कोड देखें "कई बार पढ़ें लेकिन केवल एक बार लिखें"

    अन्य सरल चीजों को बेहतर बनाने के लिए YSlow जैसे एक साधारण टूल का उपयोग करें। अपने कोड की जांच फिर से अवसरों (जावास्क्रिप्ट के माध्यम से)

    1

    आप स्मृति में भी कैश कर सकते हैं जो अधिक कुशल है। memcached आज़माएं।

    0

    ब्राउज़र में तर्क डाल करने के लिए की तलाश में seconding memcached, सरल सामान अच्छी तरह से करता है और वितरण और सभी कि जाज जा सकते हैं ताकि यह भी

    0

    जरूरत है आप कर रहे हैं अपाचे का उपयोग करके, आप अपने वेब पृष्ठों को स्थिर रूप से कैश करने के लिए mod_rewrite का उपयोग कर सकते हैं। आइए कहें कि आप PHP का उपयोग कर रहे हैं, और आपके पास "/somepage.php" का अनुरोध है। आपके मेंhtaccess फ़ाइल आप निम्नलिखित डाल:

    RewriteEngine on 
    RewriteCond %{QUERY_STRING} ^$ # let's not cache urls with queries 
    RewriteCond %{REQUEST_METHOD} ^GET$ # or POST/PUT/DELETE requests 
    RewriteCond static_cache/%{REQUEST_URI} -s # Check that this file exists and is > 0 bytes 
    RewriteRule (^.*$) static_cache$1 [L] # If all the conditions are met, we rewrite this request to hit the static cache instead 
    

    अपने कैश प्राप्त होता है तो, अनुरोध, हमेशा की तरह अपने PHP स्क्रिप्ट द्वारा नियंत्रित किया तो अब यह बस अपने PHP स्क्रिप्ट की दुकान कैश में जिसके परिणामस्वरूप एचटीएमएल बनाने की बात है है । तब

    php_value auto_prepend_file "pre_cache.php" 
    php_value auto_append_file "post_cache.php" 
    

    : यह करने के लिए सबसे आसान तरीका अंत पहले जोड़ें (यह हो सकता है या एक अच्छा विचार, आपके आवेदन के आधार पर नहीं हो सकता है) अपने सभी php अनुरोध करने के लिए php फ़ाइलें के एक जोड़े संलग्न करने के लिए एक और इनको नियम का उपयोग कर रहा है आप इस तरह से कुछ करना चाहते हैं:

    pre_cache.php:

    ob_start(); 
    

    post_cache.php:

    $result = ob_get_flush(); 
    if(!$_SERVER['QUERY_STRING']) { # Again, we're not caching query string requests 
        file_put_contents("static_cache/" + __FILE__, $result); 
    } 
    

    .htaccess फ़ाइल में कुछ अतिरिक्त नियमित अभिव्यक्तियों के साथ हम शायद क्वेरी स्ट्रिंग अनुरोधों को कैशिंग भी शुरू कर सकते हैं, लेकिन मैं इसे पाठक के लिए एक अभ्यास के रूप में छोड़ दूंगा :)

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

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