nginx कैश्ड index.html बल पुनः लोड करें

Dec 12 2020

सर्वर माइग्रेशन के दौरान एक नया nginx कॉन्फ़िगरेशन कैश conrol निर्देशों को याद कर रहा था। इसलिए, हम एक कैश्ड के साथ समाप्त हो गए index.htmlजो हमारे एसपीए के लिए बहुत बुरा है जो नए कोड को तैनात करने पर अब ताज़ा नहीं होता है। हमें कैश नहीं होने के लिए index.html की आवश्यकता है।

यह हमारा (खराब) नग्नेक्स कॉन्फिग था जो कुछ दिनों से ऑनलाइन था:

server {
  listen 80;

  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
  }

  error_page   500 502 503 504  /50x.html;

  location = /50x.html {
    root   /usr/share/nginx/html;
  }

}

हमने अपना कॉन्फिगर तय किया:

server {
  listen 80;

  root /usr/share/nginx/html;

  location / {
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
    add_header Cache-Control "no-store, no-cache, must-revalidate";
  }

  location ~* \.(js|jpg|jpeg|gif|png|svg|css)$ {
    add_header Cache-Control "max-age=31536000, public";
  }

  error_page   500 502 503 504  /50x.html;

  location = /50x.html {
    root   /usr/share/nginx/html;
  }

}

सवाल

पिछले दिनों के भीतर हमारे वेबपेज पर आए ग्राहक एक पुराने index.html को कैश करते हैं। हम उनके ब्राउज़र को उनके कैश्ड को छोड़ने के लिए कैसे मजबूर कर सकते हैं index.html?

जवाब

1 Talkerbox Dec 17 2020 at 16:38

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

UPD: मैं js विशेषज्ञ नहीं हूं, लेकिन आपको इस js-script जैसे सभी पृष्ठों पर GTM टैग जोड़ने की आवश्यकता है:

function getCookie(name) {
  let matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : undefined;
}

was_reloaded = getCookie('was_reloaded')
alert(was_reloaded)
if (was_reloaded != 'yes') {
        document.cookie = "was_reloaded=yes; path=/; max-age=3600;"
    location.reload();
} }