Kami menggunakan Nginx untuk menyajikan file statis pada platform pengembangan. Karena ini adalah platform pengembangan, kami ingin menonaktifkan caching sehingga setiap perubahan disebarkan ke server. Konfigurasi VHost cukup sederhana:
server {
server_name static.server.local;
root /var/www/static;
## Default location
location / {
access_log off;
expires 0;
add_header Cache-Control private;
}
}
Ketika kami mengakses file HTML ( http: //static.server.local/test.html ), kami tidak memiliki masalah: server mengembalikan kode 304 Tidak Diubah asalkan file tersebut tidak diubah, dan 200 tanggapan OK dengan file yang dimodifikasi ketika file diubah.
Namun, tampaknya berperilaku berbeda dengan file Javascript atau CSS. Setelah file diubah, kami mendapat respons 200 OK seperti yang diharapkan, tetapi dengan teks yang lama.
Apakah ada mekanisme cache internal di Nginx yang dapat menjelaskan perilaku ini? Atau beberapa konfigurasi yang harus kita tambahkan?
Sebagai catatan, berikut adalah header yang dikembalikan oleh Nginx ketika file telah dimodifikasi (sepertinya benar):
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
Sunting
Setelah mencoba berbagai pengaturan dengan expires
arahan dan Cache-Control
tajuk, saya melakukan beberapa penyelidikan lebih lanjut. Bahkan, server diinstal pada Ubuntu VirtualBox guest, dan data dibaca dari folder bersama yang ada di host Mac OSX.
Jika file diedit dari IDE (NetBeans) di host, tampaknya perubahan tidak muncul sedangkan jika saya mengeditnya langsung pada tamu (menggunakan VIM), itu di-refresh.
Yang aneh adalah tidak berperilaku sama dengan file HTML.
Cukup membingungkan.
Sunting 2 (JAWABAN)
Memang, asal usul masalah lebih pada sisi VirtualBox. Atau lebih tepatnya konflik antara VirtualBox dan opsi "sendfile" dari server.
Link ini VirtualBox Benci sendfile memberi saya solusi: mengganti sendfile bendera dalam konfigurasi server untuk off :
sendfile off;
Semoga ini juga bisa membantu orang lain menggunakan VirtualBox untuk pengembangan. :)
Ada beberapa informasi tambahan di forum VirtualBox .