我遵循了一个教程,并在Vagrant VM上运行了一个nginx服务器(使用Chef作为配置程序)。我只有一个html页面index.html
,如果我对其进行了更改并运行vagrant provision
,则当我在浏览器中转到该页面时,会反映出这些更改。但是,我还有一个nginx正在服务的css和js文件,如果我对它们进行了更改,即使我重新加载VM,这些更改也不会反映在页面上。尽管我可以通过SSH连接到VM并验证文件的较新版本确实在VM上。我无法弄清楚虚拟机甚至可以访问旧文件,因为我在进行更改时覆盖了它们。也许我的nginx配置文件出了问题?这是:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /home/vagrant/project/webroot;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
我将所有3个文件(js,css和html)文件存储在VM上的webroot
中。就像我说的那样,我可以通过SSH进入并验证他们应该是他们应该在的所有地方,所以我认为这一定是配置问题。我是否需要为css和js文件做一些特别的事情?
答案 0 :(得分:7)
1)您可以将缓存控制头添加到Nginx配置中。
location ~* ^.+\.(js|css)$ {
#old style: add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
#old style: add_header Pragma "no-cache";
expires -1;
sendfile off; #if you're using virtualbox (it is not about cache, but you will need it) https://www.vagrantup.com/docs/synced-folders/virtualbox.html
}
答案 1 :(得分:2)
您确定您的浏览器没有缓存旧的CSS和JS文件吗?