Páginas da Web de cache Nginx? Os usuários têm que atualizar a cada momento para ver as atualizações na casa e nos artigos

1

estamos com um problema na maioria dos nossos servidores com o Nginx + MySQL + PHP-FPM (e WordPress como CMS): os navegadores não mostram as últimas versões de nossas páginas.

Vou explicar da seguinte maneira:

  • A página inicial mostra bem o primeiro tempo que nossos visitantes carregam.
  • Adicionamos novos artigos e conteúdo e publicá-lo a partir do Wordpress.
  • Quando um usuário carrega novamente a casa, ele vê exatamente a mesma página que ele viu antes, sem mudanças.
  • Ele precisa recarregar a página inicial (Ctrl + F5, Command + r) para ver os novos artigos e conteúdo da página inicial.

Mas é ainda pior em um dos nossos servidores, onde alguns usuários precisam limpar os caches em seus navegadores (o Internet Explorer, por exemplo, mostra um problema sério), e então eles podem ver a nova página com novos artigos finalmente publicados.

O mesmo acontece quando um usuário adiciona um novo comentário em uma postagem: o comentário não é exibido, a menos que ele atualize a página da Web. Tudo parece estar em cache, mas não sei exatamente por quê.

Eu não uso nenhum plugin de cache no wordpress nesses blogs, então a única razão pela qual isso pode estar acontecendo é uma configuração ruim no Nginx.

Conforme solicitado, aqui estão os dois arquivos "importantes" aqui:

/etc/nginx/nginx.conf


user www-data;
worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  4096;
    use epoll;
    multi_accept on;
    accept_mutex_delay 50ms;
}

http {
    include       /etc/nginx/mime.types;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;
    expires max;
    server_tokens off;
    gzip  on;
    gzip_static on;
    gzip_proxied any;
    gzip_types text/plain text/css application/x-javascript text/xml text/javascript application/xml;
    gzip_vary  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

e /etc/nginx/sites-enabled/mysite.com

server {

            listen   80;
            server_name  mysite.com *.mysite.com;
            rewrite ^/(.*) http://www.mysite.com/$1 permanent;
           }


server {
              listen   80;
#             access_log  /var/www/mysite/log/access.log;
#             error_log      /var/www/mysite/log/error.log info;
              server_name     www.mysite.com;
              root /var/www/mysite/;

          location / {
              index index.php;
              try_files $uri $uri/ /index.php?q=$uri&$args;
              # if the requested file exists, return it immediately
              if (-f $request_filename) {
              break;
          }

          # all other requests go to WordPress
          if (!-e $request_filename) {
                rewrite . /index.php last;
           }
      }

## Images and static content is treated different
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
      access_log        off;
      expires           30d;
      root /var/www/mysite/;
    }


## Parse all .php file in the /var/www directory
    location ~ .php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   backend;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/mysite/$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     on;
        fastcgi_read_timeout 180;
    }


    ## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
    }
}

upstream backend {
              server 127.0.0.1:9000;
        }
}

Espero que ajude ...

    
por javipas 17.06.2011 / 12:02

2 respostas

4

Você tem expires max; na sua seção http e isso define Expires como cabeçalho para 31 de dezembro de 2037 23 : 59: 59 GMT, e o Cache-Control max-age a 10 anos.

    
por 17.06.2011 / 14:41
3

globalmente, você tem um vencimento máximo; definido em seu http {}

link

Provavelmente, isso é o que está dizendo aos navegadores que não há novos dados no carregamento da página, a menos que eles sejam atualizados.

    
por 17.06.2011 / 14:42