对nginx服务器上未显示的CSS和.js文件的更新

时间:2016-03-21 05:40:21

标签: nginx vagrant

我遵循了一个教程,并在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文件做一些特别的事情?

2 个答案:

答案 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文件吗?