फ़ाइल या डेटाबेस के अलावा, कैशिंग के कौन से तरीके उपलब्ध हैं?

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

  1. कैश को फ़ाइल में सहेजें
  2. कैश को एक बड़े डीबी फ़ील्ड में सहेजें

क्या कैशिंग के कोई अन्य (शायद बेहतर) तरीके हैं या क्या यह वाकई इतना आसान है?

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

4 उत्तर

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

0
जोड़ा

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

  • Accessing the Data Base where you cache the data first correctly tuning your RDBMS, then using a layer to delegate the decision to detect multiple queries for the same data (with AdoDB for example.)
  • Extracting calculations from loops in the code so you don't compute the same value multiple times. Here your third way: storing results in the session for the user.
  • Precompiling the PHP code with an extension like APC Cache. This way you don't have to compile the same PHP code for every request.
  • The page sent to the user making sure you're setting the right META tags (do a good thing for the world and don't use ETL at least absolutly necessary); or maybe making dynamic pages completely static (having a batch process that generates .html pages); or by using a proxy cache like Squid.
  • Prefetching and by this I refer all those opportunities you have to improve the user experience just by doing things while the user don't look your way. For example, preloading IMG tags in the HTML file, tunning the RDBMS for prefectching, precomputing results storing complex computations in the database, etc.

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

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

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

0
जोड़ा

सेकेंडिंग मेमकैच, सरल सामान अच्छी तरह से करता है और यदि आप इसे भी चाहते हैं तो वह जैज़ वितरित कर सकते हैं

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 स्क्रिप्ट को कैश में परिणामस्वरूप HTML स्टोर करने का विषय है। ऐसा करने का सबसे आसान तरीका एक और एचटीएसीएएस नियम का उपयोग करना है ताकि आप अपने सभी PHP अनुरोधों के लिए कुछ PHP फ़ाइलों को अंत में जोड़ सकें (यह आपके आवेदन के आधार पर एक अच्छा विचार हो सकता है या नहीं):

php_value auto_prepend_file "pre_cache.php"
php_value auto_append_file "post_cache.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 फ़ाइल में कुछ अतिरिक्त नियमित अभिव्यक्तियों के साथ हम शायद क्वेरी स्ट्रिंग अनुरोधों को कैशिंग भी शुरू कर सकते हैं, लेकिन मैं इसे पाठक के लिए एक अभ्यास के रूप में छोड़ दूंगा :)

0
जोड़ा