Bir geliştirme platformunda statik dosyalar sunmak için Nginx kullanıyoruz. Bir geliştirme platformu olduğundan, önbelleklemeyi devre dışı bırakmak istiyoruz, böylece her değişiklik sunucuya yayılıyor. VHost'un yapılandırması oldukça basittir:
server {
server_name static.server.local;
root /var/www/static;
## Default location
location / {
access_log off;
expires 0;
add_header Cache-Control private;
}
}
Bir HTML dosyasına ( http: //static.server.local/test.html ) eriştiğimizde , sorunumuz yok: sunucu , dosya değişmediği sürece 304 değiştirilmemiş bir kod döndürür ve 200 OK yanıtı verir. dosya değiştirildiğinde değiştirilen dosya.
Ancak, bir Javascript veya CSS dosyasıyla farklı davranıyor gibi görünüyor. Dosya değiştikten sonra, beklendiği gibi ancak eski metinle 200 Tamam yanıtı alıyoruz .
Nginx'te bu davranışı açıklayabilecek bir dahili önbellek mekanizması var mı? Veya eklememiz gereken bazı yapılandırmalar?
Bir yandan not olarak, işte dosya değiştirilirken Nginx tarafından döndürülen başlık: (doğru görünüyor):
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
Düzenleme Yönerge ve başlık
ile farklı ayarlar denedikten sonra , bazı araştırmalar yaptım. Aslında, sunucu bir VirtualBox konuk Ubuntu'ya kurulur ve veriler Mac OSX ana bilgisayarındaki paylaşılan bir klasörden okunur.
Dosya ana bilgisayardaki bir IDE'den (NetBeans) düzenlenirse, değişiklikler doğrudan görünmüyor, oysa doğrudan konuk üzerinde düzenlersem (VIM kullanarak), yenilenir.
Tuhaf olan şey, HTML dosyalarına benzer şekilde davranmamasıdır.
Oldukça şaşırtıcı.expires
Cache-Control
Düzen 2 (CEVAP)
Aslında, sorunun kaynağı VirtualBox tarafında daha fazlaydı. Ya da daha çok VirtualBox ve sunucunun "sendfile" seçeneği arasında bir çatışma.
Bu bağlantı VirtualBox Hates Sendfile bana bir çözüm verdi: sunucu yapılandırmasındaki sendfile bayrağını kapalı konuma getir :
sendfile off;
Umarım bu, geliştirme için VirtualBox kullanan diğer kişilere de yardımcı olabilir. :) VirtualBox forumunda
bazı ek bilgiler var .