Cloudflare: URL को क्वेरी स्ट्रिंग होने पर कैश स्थिर HTML


10

आपके लिए त्वरित CloudFlare 'नया उपयोगकर्ता' प्रश्न:

बैकग्राउंड: मेरे मूल सर्वर द्वारा सेवा किए गए HTML पृष्ठ कभी नहीं बदलते हैं। उपयोगकर्ता के ब्राउज़र में पेज लोड होने के बाद सभी डायनामिक सामग्री को जावास्क्रिप्ट के माध्यम से डाउनलोड किया जाता है। जावास्क्रिप्ट द्वारा प्राप्त की गई गतिशील सामग्री URL के क्वेरी स्ट्रिंग के भाग पर निर्भर करती है, लेकिन क्वेरी स्ट्रिंग का मूल रूप से डाउनलोड किए गए HTML सामग्री पर कोई प्रभाव नहीं पड़ता है। निम्न URL इसलिए सभी ब्राउज़र में जावास्क्रिप्ट द्वारा कार्य किए जाने से पहले मूल से बिल्कुल एक ही HTML उत्पन्न करते हैं :

https://www.example.com/private/my-investments?portfolioID=296

https://www.example.com/private/my-investments?portfolioID=325

https://www.example.com/private/my-investments?portfolioID=319

प्रश्न: यह देखते हुए कि CloudFlare डिफ़ॉल्ट रूप से HTML को कैश नहीं करता है, मैं अपने पेज नियम कैसे बनाऊंगा ताकि https://www.example.com/pStreet/my-investments?idanyValue] की एक ही कैश्ड प्रति सभी उपयोगकर्ताओं को वापस कर दी जाए ? यहाँ मैंने कोशिश की है:

"CACHE EVERYTHING:" 'कैश एवरीथिंग' निर्देश के प्रयोग से मेरा HTML कैश्ड (अच्छा) हो जाता है लेकिन यह कैश की (खराब) के हिस्से के रूप में पूरे क्वेरी स्ट्रिंग का उपयोग करता है। इसलिए यदि कोई उपयोगकर्ता निम्नलिखित URL को हिट करता है ...

https://www.example.com/private/my-investments?portfolioID=296

... और फिर दस सेकंड बाद उसी URL को एक अलग क्वेरी स्ट्रिंग के साथ हिट करता है, जैसे:

https://www.example.com/private/my-investments?portfolioID=325

... CloudFlare उस बाद के अनुरोध को कैश MISS (cf-cache-status: MISS) के रूप में मानता है और मेरे मूल सर्वर को फिर से हिट करता है। यह इस तथ्य के बावजूद कि HTML मूल से लौटा है दोनों URL के लिए समान है।

"IGNORE QUERY STRING CACHING:" मुझे लगा कि मैं "IGNORE QUERY STRING CACHING" विकल्प चुनकर इस समस्या को हल कर दूंगा। लेकिन जब पृष्ठ नियम में इस विकल्प का उपयोग किया जाता है, तो कोई भी एचटीएमएल कैश नहीं किया जाता है; केवल .js, .css, और .png फ़ाइलें कैश की गई हैं। और एक बार फिर से मेरी उत्पत्ति HTML डेटा के लिए हर एक कॉल के लिए हिट हो जाती है। :(

मुझे लगता है कि मुझे कुछ स्पष्ट याद आ रहा होगा। कोई विचार?

अद्यतन : एक विचार था जो मैं आपके द्वारा चलाना चाहता हूं। क्या मैं '' के बजाय '#' का उपयोग करने के लिए अपनी आंतरिक URL योजना को बदलकर इस समस्या को हल कर सकता हूं? इसके बजाय एक URL की तरह ...

https://www.example.com/private/my-investments?portfolioID=296

.. मैं कुछ इस तरह का उपयोग करेगा:

https://www.example.com/private/my-investments#portfolioID=296

यह क्वेरी स्ट्रिंग पैरामीटर्स को CloudFlare पर ट्रांसमिट होने से रोकेगा ... आपको क्या लगता है?

Festus


"#" के बजाय "?" URL में समस्या हल हो गई। Sysops आगे जा सकते हैं और मेरे प्रश्न को हटा सकते हैं।
फेस्टस मार्टिंगेल

4
अन्य लोग आपके द्वारा यहां समझाई गई बातों से सीख सकते हैं, इसलिए हो सकता है कि आप एक उत्तर के रूप में (थोड़ा विस्तार के साथ) जो कुछ किया हो उसे प्रदान कर सकते हैं और जब चाहें कर सकते हैं। धन्यवाद।
दान

जवाबों:


4

(उत्तर के रूप में प्रश्न को चिह्नित करने के लिए @Festus Martingale के लिए उत्तर जोड़ा गया)।

हल की गई समस्या के ?साथ प्रतिस्थापित करने से #यह क्वेरी स्ट्रिंग को क्लाउडफ्लेयर में संचारित होने से रोकता है क्योंकि यह हैश टुकड़ा के रूप में प्रकट होता है।


मेरा नाम फेस्टस है। मैंने इसे एक उत्तर के रूप में चिह्नित किया है।
फेस्टस मार्टिंगेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.