पर index.html को कैश नहीं करना है मेरे पास एक S3 बाल्टी पर एक रिएक्ट ऐप होस्ट किया गया है। कोड को yarn build
(यह एक क्रिएट-रिएक्ट-एप आधारित ऐप है) का उपयोग करके छोटा किया गया है। build
फ़ोल्डर लग रहा है कि:क्लाउडफ्रंट को कैसे S3 बाल्टी
build
├── asset-manifest.json
├── favicon.ico
├── images
│ ├── map-background.png
│ └── robot-icon.svg
├── index.html
├── js
│ ├── fontawesome.js
│ ├── packs
│ │ ├── brands.js
│ │ ├── light.js
│ │ ├── regular.js
│ │ └── solid.js
│ └── README.md
├── service-worker.js
└── static
├── css
│ ├── main.bf27c1d9.css
│ └── main.bf27c1d9.css.map
└── js
├── main.8d11d7ab.js
└── main.8d11d7ab.js.map
मैं कभी नहीं चाहते index.html
कैश हो जाने की, अगर मैं कोड को अद्यतन (अपडेट करने के लिए main.*.js
में हेक्स प्रत्यय के कारण), मैं उपयोगकर्ता की अगली यात्रा की जरूरत है क्योंकि पर लेने के लिए अद्यतन कोड को इंगित करने के लिए <script src>
index.html
में परिवर्तन।
क्लाउडफ्रंट में, मैं केवल पथ को बाहर करने के लिए प्रतीत होता हूं, और "/" को छोड़कर ठीक से काम नहीं कर रहा है। मुझे अजीब व्यवहार मिल रहा है जहां मैं कोड बदलता हूं, और यदि मैं रीफ्रेश करता हूं, तो मैं इसे देखता हूं, लेकिन अगर मैं क्रोम छोड़ देता हूं और वापस जाता हूं, तो मुझे किसी कारण से बहुत पुराना कोड दिखाई देता है।
मैं प्रत्येक कोड रिलीज (कोडबिल्ड के माध्यम से) पर एक अमान्यता को ट्रिगर नहीं करना चाहता हूं। क्या कोई और रास्ता है? मुझे लगता है कि यह चुनौतियों में से एक है कि चूंकि यह रिएक्ट राउटर का उपयोग कर एक ऐप है, इसलिए मुझे त्रुटि दस्तावेज़ को index.html
पर सेट करके और 403 के बजाय HTTP स्थिति 200 को मजबूर कर कुछ ट्रिकरी करना पड़ रहा है।
और क्या आप उस शीर्षलेख को S3 ऑब्जेक्ट मेटाडेटा में जोड़ने के बारे में बात कर रहे हैं? और यूआरएल पथ पर ध्यान दिए बिना, मैं index.html कैश्ड कभी नहीं चाहता। मैं संबंधित फाइलों को कैश करने के बारे में अधिक चिंतित हूं (जेएस फाइलें, सीएसएस, छवियां)। – ffxsam
हां: इसे एडब्लूएस दस्तावेज में 'सिस्टम-डिफ़ाइंड मेटाडाटा' के रूप में जाना जाता है: http://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-object-metadata.html –
ग्रेट, यह है उपयोगी! इंडेक्स फ़ाइल पर प्रतिलिपि करते समय मैंने 'aws s3 cp --cache-control max-age = 0' का उपयोग करने के लिए अपनी तैनाती प्रक्रिया स्थापित की है। एक जादू की तरह काम करता है। – ffxsam