पृष्ठभूमि
मैं S3 पर एक स्थैतिक साइट की मेजबानी कर रहा हूं, शीर्ष पर CloudFront के साथ। मेरे पास जो समस्या है वह मेरी HTML फ़ाइलों के साथ है।
CloudFront के अकसर किये गए सवाल के अनुसार :
Amazon CloudFront इन कैश कंट्रोल हेडर का उपयोग यह निर्धारित करने के लिए करती है कि उस फ़ाइल के अपडेट किए गए संस्करण के लिए मूल को कितनी बार जांचना है
मैंने अब तक क्या किया है
इसे ध्यान में रखते हुए, मैंने निम्नलिखित हेडर में जोड़ने के लिए अपने S3 बाल्टी में HTML फाइलें सेट की हैं:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
मेरी पहली कॉल पर samplefile.htm
, मुझे निम्नलिखित प्रतिक्रिया हेडर दिखाई देते हैं ( Content-Type
बिंदु पर रखने के लिए मैंने स्पष्ट हेडर (जैसे ) को बाहर रखा है :
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Date:Sat, 10 Dec 2011 14:16:51 GMT
ETag:"a5890ace30a3e84d9118196c161aeec2"
Expires:Fri, 01 Jan 1990 00:00:00 GMT
Last-Modified:Sat, 10 Dec 2011 14:16:43 GMT
Server:AmazonS3
X-Cache:Miss from cloudfront
जैसा कि आप देख सकते हैं, मेरा Cache-Control
हेडर वहां मौजूद है। समस्या यह है, अगर मैं इस फाइल को अपडेट करता हूं और रिफ्रेश करता हूं तो मुझे कैश्ड कंटेंट मिलता है (लेटेस्ट फाइल के बजाय), और मैं देख सकता हूं कि CloudFront अपने कैश्ड वर्जन को रिस्पॉन्स हेडर देखकर सर्व कर रही है:
X-Cache:Hit from cloudfront
सारांश / प्रश्न
उपर्युक्त ध्यान में रखते हुए, मैं CloudFront का उपयोग करते समय नवीनतम HTML की स्वचालित पुनर्प्राप्ति कैसे प्राप्त कर सकता हूं?
इसके अकसर किये गए सवाल के अनुसार मुझे यह कैश-कंट्रोल हेडर के साथ करने में सक्षम होना चाहिए, लेकिन मुझे यह काम नहीं मिल रहा है।
नीचे दिए गए जवाब
अंत में मैंने अपने S3 बाल्टी को सीधे इंगित करने के लिए अपने www CNAME को बदलने का फैसला किया। फिर "स्थिर" नामक एक नया CNAME जोड़ा, जो CloudFront को इंगित करता है।
इसका मतलब यह है कि HTML S3 से प्रत्यक्ष है, जिसके बाद उसके सभी CSS / JS / IMG संदर्भों को static.mydomain.com की ओर इशारा किया गया है