[amazon-web-services] क्लाउडफ्रंट वितरण / फ़ाइल अद्यतन बल



Answers

1 9 मार्च तक, अमेज़ॅन अब क्लाउडफ़्रंट के कैश टीटीएल को 0 सेकंड होने की अनुमति देता है, इस प्रकार आप (सैद्धांतिक रूप से) को कभी भी पुरानी वस्तुओं को नहीं देखना चाहिए। इसलिए यदि आपके पास एस 3 में आपकी संपत्ति है, तो आप आसानी से एडब्ल्यूएस वेब पैनल => एस 3 => गुण संपादित करें => मेटाडाटा पर जा सकते हैं, फिर अपना "कैश-कंट्रोल" मान "अधिकतम आयु = 0" पर सेट करें।

यह सीधे एपीआई दस्तावेज से है :

यह नियंत्रित करने के लिए कि क्लाउडफ्रंट किसी ऑब्जेक्ट को कैश करता है और कितनी देर तक, हम अनुशंसा करते हैं कि आप अधिकतम आयु = निर्देश के साथ कैश-कंट्रोल हेडर का उपयोग करें। क्लाउडफ्रंट निर्दिष्ट सेकंड के लिए ऑब्जेक्ट को कैश करता है। (न्यूनतम मान 0 सेकंड है।)

Question

मैं अपने वेब ऐप्स की स्थिर फाइलों को पूरा करने के लिए अमेज़ॅन के क्लाउडफ्रंट का उपयोग कर रहा हूं।

क्या क्लाउडफ़्रंट वितरण को बताने का कोई तरीका नहीं है जिसे इसे अपनी फ़ाइल को रीफ्रेश करने की आवश्यकता है या एक फ़ाइल को इंगित करने की आवश्यकता है जिसे रीफ्रेश किया जाना चाहिए?

अमेज़ॅन अनुशंसा करते हैं कि आप अपनी फ़ाइलों को लोगो_1.gif, logo_2.gif जैसे संस्करण दें और इस समस्या के लिए एक समाधान के रूप में, लेकिन यह एक सुंदर बेवकूफ समाधान की तरह लगता है। क्या बिल्कुल कोई दूसरा रास्ता नहीं है?




बाल्टी एक्सप्लोरर में एक यूआई है जो अब इसे बहुत आसान बनाता है। ऐसे:

अपनी बाल्टी पर राइट क्लिक करें। "वितरण प्रबंधित करें" का चयन करें।
अपने वितरण पर राइट क्लिक करें। "क्लाउडफ़्रंट अमान्यता सूची प्राप्त करें" का चयन करें और फिर एक नई अमान्यता सूची बनाने के लिए "बनाएं" का चयन करें। अमान्य करने के लिए फ़ाइलों का चयन करें, और "अमान्य" पर क्लिक करें। 5-15 मिनट प्रतीक्षा करें।




ऐसा करने का एक बहुत आसान तरीका फोल्डर संस्करण है।

इसलिए यदि आपकी स्थिर फाइल उदाहरण के लिए सैकड़ों हैं, तो बस उन्हें सभी को वर्ष + संस्करण द्वारा बुलाए गए फ़ोल्डर में डाल दें।

उदाहरण के लिए मैं 2014_v1 नामक फ़ोल्डर का उपयोग करता हूं, जहां मेरे पास मेरी सभी स्थिर फाइलें हैं ...

तो मेरे एचटीएमएल के अंदर मैं हमेशा फ़ोल्डर में संदर्भ डालता हूं। (निश्चित रूप से मेरे पास एक PHP शामिल है जहां मैंने फ़ोल्डर का नाम सेट किया है।) तो 1 फ़ाइल में बदलकर यह वास्तव में मेरी सभी PHP फ़ाइलों में बदल जाता है ..

अगर मैं एक पूर्ण ताज़ा करना चाहता हूं, तो मैं बस अपने स्रोत में फ़ोल्डर को 2014_v2 में बदलता हूं और php के अंदर परिवर्तन 2014_v2 में शामिल करता हूं

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

उदाहरण: SOURCE.mydomain.com मेरा स्रोत है, cloudfront.mydomain.com क्लाउडफ़्रंट वितरण के लिए CNAME है।

तो PHP ने इस फ़ाइल को cloudfront.mydomain.com/2014_v1/javascript.js कहा और जब मैं एक पूर्ण रीफ्रेश करना चाहता हूं, तो बस मैं स्रोत में फ़ोल्डर को "2014_v2" में बदलता हूं और मैं फ़ोल्डर को "2014_v2" में सेट करके PHP को बदलता हूं ।

इस तरह अमान्यता और कोई लागत के लिए कोई देरी नहीं है!

यह स्टैक ओवरफ्लो में मेरी पहली पोस्ट है, आशा है कि मैंने इसे अच्छी तरह से किया है!




यदि आपके पास boto इंस्टॉल है (जो सिर्फ पायथन के लिए नहीं है, बल्कि उपयोगी कमांड लाइन यूटिलिटीज का एक गुच्छा भी स्थापित करता है), तो यह कमांड लाइन का उपयोग करता है जिसे विशेष रूप से cfadmin या 'क्लाउड फ्रंट एडमिन' कहा जाता है जो निम्न कार्यक्षमता प्रदान करता है:

Usage: cfadmin [command]
cmd - Print help message, optionally about a specific function
help - Print help message, optionally about a specific function
invalidate - Create a cloudfront invalidation request
ls - List all distributions and streaming distributions

आप चलकर चीजों का आविष्कार करते हैं:

$sam# cfadmin invalidate <distribution> <path>



पूर्वावलोकन मोड में वर्तमान एडब्ल्यूएस सीएलआई समर्थन अमान्यता। एक बार अपने कंसोल में निम्न चलाएं:

aws configure set preview.cloudfront true

मैं एनपीएम का उपयोग कर अपने वेब प्रोजेक्ट को तैनात करता हूं। मेरे पास मेरे package.json में निम्नलिखित स्क्रिप्ट हैं। package.json :

{
    "build.prod": "ng build --prod --aot",
    "aws.deploy": "aws s3 sync dist/ s3://www.mywebsite.com --delete --region us-east-1",
    "aws.invalidate": "aws cloudfront create-invalidation --distribution-id [MY_DISTRIBUTION_ID] --paths /",
    "deploy": "npm run build.prod && npm run aws.deploy && npm run aws.invalidate"
}

जगह पर ऊपर की लिपियों के साथ आप अपनी साइट को इसके साथ तैनात कर सकते हैं:

npm run deploy



धुंध में, धुंध मणि का उपयोग कर

AWS_ACCESS_KEY = ENV['AWS_ACCESS_KEY_ID']
AWS_SECRET_KEY = ENV['AWS_SECRET_ACCESS_KEY']
AWS_DISTRIBUTION_ID = ENV['AWS_DISTRIBUTION_ID']

conn = Fog::CDN.new(
    :provider => 'AWS',
    :aws_access_key_id => AWS_ACCESS_KEY,
    :aws_secret_access_key => AWS_SECRET_KEY
)

images = ['/path/to/image1.jpg', '/path/to/another/image2.jpg']

conn.post_invalidation AWS_DISTRIBUTION_ID, images

यहां तक ​​कि अमान्यता पर भी, अमान्यता को संसाधित करने और सभी अमेज़ॅन एज सर्वरों पर रीफ्रेश करने के लिए अभी भी 5-10 मिनट लगते हैं




Related