हम एक विकास मंच पर स्थिर फ़ाइलों की सेवा करने के लिए Nginx का उपयोग कर रहे हैं। जैसा कि यह एक विकास मंच है, हम कैशिंग को अक्षम करना चाहेंगे ताकि प्रत्येक परिवर्तन सर्वर पर प्रसारित हो। विहस्ट का विन्यास काफी सरल है:
server {
server_name static.server.local;
root /var/www/static;
## Default location
location / {
access_log off;
expires 0;
add_header Cache-Control private;
}
}
जब हम एक HTML फ़ाइल ( http: //static.server.local/test.html ) का उपयोग करते हैं, तो हमारे पास कोई समस्या नहीं है: सर्वर एक कोड लौटाता है 304 तब तक संशोधित नहीं किया जाता है जब तक कि फ़ाइल बदल नहीं जाती है, और 200 के साथ एक ठीक प्रतिक्रिया फ़ाइल बदली जाने पर संशोधित फ़ाइल।
हालाँकि, यह एक जावास्क्रिप्ट या CSS फ़ाइल के साथ अलग तरह से व्यवहार करता है। एक बार फ़ाइल बदलने के बाद, हमें उम्मीद के मुताबिक 200 ओके रिस्पॉन्स मिलता है, लेकिन पुराने टेक्स्ट के साथ।
क्या नगीनक्स में एक आंतरिक कैश तंत्र है जो इस व्यवहार की व्याख्या कर सकता है? या कुछ विन्यास जो हमें जोड़ना चाहिए?
एक साइड नोट के रूप में, फाइल को संशोधित किया गया है (यह सही लगता है)
Accept-Ranges:bytes
Cache-Control:max-age=0
private
Connection:keep-alive
Content-Length:309
Content-Type:text/css
Date:Fri, 13 May 2011 14:13:13 GMT
Expires:Fri, 13 May 2011 14:13:13 GMT
Last-Modified:Fri, 13 May 2011 14:13:05 GMT
Server:nginx/0.8.54
संपादित करें निर्देश और हेडर के
साथ विभिन्न सेटिंग्स की कोशिश करने के बाद , मैंने कुछ और जांच की। वास्तव में, सर्वर को एक वर्चुअलबॉक्स अतिथि उबंटू पर स्थापित किया गया है, और डेटा को एक साझा फ़ोल्डर से पढ़ा जाता है जो मैक ओएसएक्स होस्ट पर है।
यदि फ़ाइल को होस्ट पर एक IDE (NetBeans) से संपादित किया जाता है, तो ऐसा लगता है कि परिवर्तन दिखाई नहीं देते हैं जबकि अगर मैं इसे सीधे अतिथि (VIM का उपयोग करके) पर संपादित करता हूं, तो यह ताज़ा हो जाता है।
अजीब बात यह है कि यह HTML फ़ाइलों के साथ समान व्यवहार नहीं करता है।
काफी हैरान करने वाला।expires
Cache-Control
संपादन 2 (उत्तर)
वास्तव में, मुद्दे की उत्पत्ति वर्चुअलबॉक्स की ओर अधिक थी। या बल्कि VirtualBox और सर्वर के "Sendfile" विकल्प के बीच एक संघर्ष।
इस कड़ी VirtualBox से नफरत करता Sendfile मुझे समाधान दिया: स्विच Sendfile करने के लिए सर्वर विन्यास में झंडा बंद :
sendfile off;
आशा है कि यह विकास के लिए VirtualBox का उपयोग करने वाले अन्य व्यक्ति की भी मदद कर सकता है। :) वर्चुअलबॉक्स फोरम
पर कुछ अतिरिक्त जानकारी हैं ।