इस समाधान के लिए कैश बनाम कुकीज़ मुझे परेशान करने के लिए जा रहे हैं?


23

मैं बिल्कुल सामान्य नहीं है, लेकिन कुकीज़ के साथ लोकप्रिय WP कैशिंग समाधान की बातचीत के साथ अभूतपूर्व समस्या से दूर के लिए एक अनंतिम समाधान के साथ आया हूं, इस मामले में मानक WP टिप्पणी कुकीज़। मेरा समाधान भी शायद ही कभी परिभाषित "ज्ञात उपयोगकर्ताओं" पर निर्भर करता है ताकि कैश्ड फ़ाइलों की सेवा की जा सके। यह प्रयोग करने योग्य है या नहीं, मुझे लगता है कि इसे समझाने और संभवतः यह जानने के लिए कि यह एक बुरा विचार क्यों है, आमतौर पर शिक्षाप्रद हो सकता है।

मैंने WP Super Cache, W3 Total Cache, और Comet Cache के साथ अपने तरीके का परीक्षण किया है। इस समस्या का अध्ययन करते समय मैंने अपने बारे में जो विस्तार से बताया, वह था WP सुपर कैश (इसके बाद "डब्ल्यूपीएससी"), इसलिए मैं इसे अपने मुख्य उदाहरण के रूप में उपयोग करूंगा।

पृष्ठभूमि

जब एक WP मानक टिप्पणी धागा आगंतुकों को टिप्पणी करने की अनुमति देने के लिए सेट किया जाता है, तो टिप्पणियाँ कुकीज़ किसी भी टिप्पणीकार के लिए सेट की जाती हैं जो एक पंजीकृत उपयोगकर्ता नहीं है और लॉग इन किया है, वास्तविक टिप्पणी विशेषाधिकारों के आगे जांच के अधीन है। मेरा मानना ​​है कि सबसे आम विन्यास है, एक टिप्पणीकार को केवल एक नाम और एक ईमेल पते की आपूर्ति करने की आवश्यकता है। ये आमतौर पर comment_author_ . COOKIEHASHऔर , दो ब्राउज़र कुकीज़ के भीतर संग्रहीत होते हैं comment_author_email_ . COOKIEHASHCOOKIEHASHउपयोगकर्ता विकल्पों के अनुसार परिभाषित किया गया है।

यदि "ज्ञात उपयोगकर्ताओं को ताज़ा जेनरेट की गई फ़ाइलों को वितरित करने के लिए सेट किया जाता है," WPSC यह निर्धारित करता है कि कई जाँचों के आधार पर कैश्ड फ़ाइल की सेवा दी जाए या नहीं: लॉग-इन उपयोगकर्ताओं को ताज़ा फ़ाइलें मिलती हैं, और इसलिए आगंतुक "जो टिप्पणी कर सकते हैं।" उत्तरार्द्ध मुख्य रूप से comment_author_कुकीज़ के अपने ब्राउज़र में उपस्थिति से पहचाने जाते हैं जो विशेष रूप से उपयोगकर्ता के लिए विशेष रूप से या विशिष्ट रूप से पहचाने नहीं जाते हैं COOKIEHASH(आमतौर पर साइट विकल्पों में दर्ज "साइटर्ल" का एमडी 5-एन्कोडेड संस्करण नहीं)।

डब्ल्यूपीसी-कोड -1. डब्ल्यूपी-एलएल 371-383 से डब्ल्यूपीसीसी कोड का प्रमुख हिस्सा क्या प्रतीत होता है, कुकीज़ प्राप्त करने के लिए एक स्ट्रिंग, साइकिल चलाने के लिए एक RegEx पैटर्न का उपयोग करता है:

$regex = "/^wp-postpass|^comment_author_";
if ( defined( 'LOGGED_IN_COOKIE' ) )
    $regex .= "|^" . preg_quote( constant( 'LOGGED_IN_COOKIE' ) );
else
    $regex .= "|^wordpress_logged_in_";
$regex .= "/";
while ($key = key($_COOKIE)) {
    if ( preg_match( $regex, $key ) ) {
        wp_cache_debug( "wp_cache_get_cookies_values: $regex Cookie detected: $key", 5 );
        $string .= $_COOKIE[ $key ] . ",";
    }
    next($_COOKIE);
}

अब, अगर मैं PHP में सख्ती से काम कर रहा था, तो मैं WP कोर फ़ंक्शंस में फिर से उत्पादन या हुक कर सकता हूं, और comment_author_ . COOKIEHASHटिप्पणी टेम्पलेट द्वारा सामान्य सेट प्राप्त कर सकता हूं, लेकिन मैं jQuery में jQuery कुकी प्लग-इन का उपयोग करके काम कर रहा हूं। हालाँकि, जैसा कि आप देख सकते हैं कि यदि आप RegEx को देखते हैं, तो WPSC फ़ंक्शन को इसकी परवाह नहीं है COOKIEHASH: यदि यह सामना करता है तो यह संतुष्ट है comment_author_

मेरा तम्बू समाधान

$.cookie( 'comment_author_proxyhash', 'proxy_author', { path: '/' } );

JQuery कुकी से अपरिचित लोगों के लिए: उपरोक्त कुंजी = comment_author_proxyhashऔर मान = के साथ एक साधारण सत्र कुकी सेट करता है proxy_author, जो पूरी साइट के लिए अच्छा है। (इसके अलावा, जो लोग jQuery कुकी और WP का उपयोग करें, इसके अलावा में पूर्व प्रतिस्थापन परिचित jQuery के लिए $WP के लिए jQuery, मैं भी पहले से ही निर्धारित किया है $.cookie.raw = true;।)

मैंने अपने jQuery स्क्रिप्ट और, वॉइला में लाइन जोड़ी ! , WPSC, W3 कुल कैश, और धूमकेतु कैश सभी अभिनय कर रहे हैं जैसे मैं उन्हें चाहता हूं। जब मैं स्क्रिप्ट का उपयोग करता हूं, और फिर से लोड करता हूं, तो मुझे नए पृष्ठ मिलते हैं। अगर मैं एक वास्तविक टिप्पणी करने के लिए होता हूं, तो सामान्य comment_author_और comment_author_email_कुकीज़ सेट होते हैं, और सह-अस्तित्व के साथ कोई समस्या नहीं लगती है।

शायद एक दोष यह होगा कि "प्रॉक्सी" कुकी उपयोगकर्ता के साथ यात्रा करेगी जब तक कि वह सत्र को खुला रखती है, लेकिन यह मुझे एक बड़ी समस्या के रूप में हड़ताल नहीं करता है - या यहां तक ​​कि चेतावनी के लायक भी। मैंने निश्चित रूप से किसी को नियमित कुकीज़ में से किसी के साथ होने वाली शिकायत के बारे में नहीं सुना है।

लेकिन शायद कुछ ऐसा है जो मुझे याद आ रहा है, और मेरे शोक के बारे में बहुत कुछ पता करने के लिए, यदि संभवतः मेरे संपादन के लिए भी। या शायद मेरे लिए COOKIEHASHjQuery में दोहराने के लिए एक अपेक्षाकृत सरल सबसे अच्छा तरीका है , वैकल्पिक उपयोग के मामलों को भी कवर करना ... या अन्य तरीकों से एक ही अंतिम प्रभाव को प्राप्त करना - आगंतुक को इलाज करने में कैशिंग प्लग-इन को धोखा देने के अन्य तरीके। एक टिप्पणीकार के रूप में ...

यदि नहीं, तो क्या यह कोई अच्छा कारण नहीं है कि इस या कुछ और को प्लग-इन में ब्रह्मांड के बाहर धकेल दिया जाए?


3
एक अच्छी तरह से शोध और प्रलेखित प्रश्न के लिए सहारा। हालाँकि, मुझे लगता है कि प्रश्न की प्रकृति एक निश्चित उत्तर के विरोध के रूप में चर्चा के लिए इसे और अधिक खोल सकती है (ऑफ-टॉपिक: मुख्य रूप से राय)। मेरे विचार में एफडब्ल्यूआईडब्ल्यू मुझे यहां कुछ भी गलत नहीं दिख रहा है - अंततः आप केवल एक एकल, सामान्य कुकी सेट कर रहे हैं जिसमें कोई व्यक्तिगत डेटा नहीं है।
TheDeadMedic

इनपुट के लिए बहुत बहुत धन्यवाद। मैं इस तरह की चर्चा के लिए आभारी रहूंगा, और मैं किसी भी अच्छे उत्तर के रूप में चिह्नित करूंगा कि क) इस "सामान्य कुकी" विधि के साथ एक समस्या बताई गई, ख) उसी प्रभाव को प्राप्त करने के लिए वैकल्पिक साधन प्रदान किए गए, या ग) उपयोगी प्रदान किए गए "ज्ञात उपयोगकर्ताओं" से संबंधित अंतर्निहित तकनीकी प्रश्नों में अंतर्दृष्टि।
सीके मैकलॉड

बस ध्यान दें, आप wp_localize_scriptकुकी हैश को अपनी जावास्क्रिप्ट में पास करने के लिए उपयोग कर सकते हैं ताकि आप छद्म के बजाय "देशी" कुकी का उपयोग कर सकें। अन्यथा, यह एक बहुत ही दिलचस्प मुद्दा है और आपका समाधान ठोस प्रतीत होता है, हालांकि कुकीज़ + कैश हमेशा इतना जटिल होता है कि यह कहना मुश्किल है कि यह "सही" समाधान है या यदि कुछ याद किया जा रहा है। महान शोध!
फतस्कैट

दिलचस्प सवाल - मैं इस बारे में कुछ भी नहीं सोच सकता कि इससे आपको परेशानी होगी, लेकिन क्या मैं पूछ सकता हूं कि आप इस तरह से कैश को क्यों दरकिनार करना चाहते हैं? उपयोगकर्ताओं को इस तरह की सुविधा देने से पूरा पेज कैश के साथ शुरू होने का उद्देश्य पराजित होता है। इसके अलावा, एक अतिरिक्त कुकी अनुरोध के आकार (न्यूनतम रूप से) में जुड़ जाती है, जब एक ही परिणाम सामान्य कैश कॉन्फ़िगरेशन के साथ URL पर किसी भी क्वेरी परम को जोड़कर प्राप्त किया जा सकता है, जैसे mysite.com?a। बस मेरी $ 0.02 ...
ssnepenthe

ssnepenthe: शायद मुझे समझाया जाना चाहिए: एक प्लगइन मैं विकसित कर रहा था जब मैंने प्रश्न लिखा था - wordpress.org/plugins/commenter-ignore-button - आगंतुकों को चयनित टिप्पणीकारों को "अनदेखा करने" की अनुमति देने के लिए jQuery का उपयोग करता है। प्रारंभिक क्रिया सीएसएस फॉर्मेटिंग को कमेंट थ्रेड पर लागू करती है, और फिर कुकी समाप्ति तक बाद के रिफ्रेश पर प्रभाव (PHP के माध्यम से) की नकल करने के लिए पदनाम और उसकी उपस्थिति को संग्रहीत करने के लिए कुकी पर निर्भर करती है। पृष्ठ के कैश्ड संस्करण में, प्रभाव पंजीकृत नहीं होगा। तो, हाँ, यह जानबूझकर स्थानीय कैश-बस्टिंग का एक रूप है।
सीके मैकलॉड

जवाबों:


1

आपका समाधान comment_author_proxyhash कुकी के साथ निश्चित रूप से तकनीकी रूप से काम करेगा - मुझे पता है कि सभी कैशिंग प्लगइन्स हैश मान का विश्लेषण नहीं करते हैं और बस comment_author_ * कुकी के आधार पर कैश्ड सामग्री की डिलीवरी रोक देंगे।

यहाँ समस्या यह है कि पेज कैशिंग कार्यक्षमता कुछ वेबसाइटों को वास्तव में ज़रूरत है और अक्सर पृष्ठ कैशिंग बिल्कुल कॉन्फ़िगर किया गया है क्योंकि नग्न वर्डप्रेस प्रदर्शन पर्याप्त नहीं है और चरम समय पर सर्वर को क्रैश करने में भी सक्षम है। यह वेबसाइट सामग्री प्रकृति पर निर्भर करता है, लेकिन साइट स्वामी कभी-कभी PHP / WP कोड के माध्यम से सब कुछ संभालने के लिए आवश्यक हार्डवेयर का भुगतान करने में सक्षम नहीं होते हैं। दूसरे शब्दों में जब भी संभव हो ट्रैफ़िक को पेज कैश से परोसा जाना चाहिए। अभ्यास से मैं बता सकता हूं कि हमें अक्सर कैश अपवादों को करने वाले प्लगइन्स को पहचानना और अक्षम करना होगा।

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

किसी भी मामले में आपको एक टिप्पणीकार के रूप में आगंतुक को चिह्नित करने की आवश्यकता नहीं है, लेकिन अपने कस्टम तर्क कारणों के कारण कैशिंग बंद कर दें। इसलिए अद्वितीय कुकी का उपयोग करना बेहतर है और इसे कैश अपवाद सिग्नल बनाना है। W3 Total Cache में उसके लिए "अस्वीकार कुकीज़" विकल्प है, लेकिन आपकी सूची से अन्य प्लगइन्स नहीं हैं इसलिए आपको एक हैक की आवश्यकता होगी जैसे आपने सुझाया है।


धन्यवाद! आप कई वैध मुद्दों को उठाते हैं, लेकिन मैं कहूंगा कि यह कोड अनिवार्य रूप से क्या करता है, किसी भी आगंतुक का व्यवहार करता है, जो टिप्पणी थ्रेड में भाग ले रहा है, जो किसी "ज्ञात उपयोगकर्ता /" के रूप में किसी को "अनदेखा" या "म्यूट" करने के लिए पर्याप्त है। टिप्पणीकार। " यदि कोई साइट इस तरह की भागीदारी को संभाल नहीं सकती है, तो वह शायद एक मानक वर्डप्रेस टिप्पणी टेम्पलेट (और टिप्पणी समुदाय) को भी नहीं संभाल सकती है!
CK MacLeod

लगता है कि आप यहीं हैं, जबकि निश्चित रूप से यह नहीं जान सकते कि आपके उपयोगकर्ता इसका उपयोग कैसे करते हैं। Btw कई उच्च यातायात वेबसाइटों के लिए एक अलग अनुरोध या तीसरे पक्ष की सेवा के लिए अपने लेख प्रसंस्करण बोझ उतार देना बिल्कुल लेख सामग्री तेजी से और आलसी लोड गतिशील टिप्पणियों सामग्री प्रदर्शित करने के उद्देश्य से बाद में। अपने प्लगइन के शायद आगे के संस्करणों के लिए इसे एक अपमानजनक विचार के रूप में लें :)
WowPress.host
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.