nginx não retornando cabeçalhos atualizados do servidor de origem em GET condicional

1

Eu tenho o nginx e seu cache funcionando como esperado, além de um problema menor. Quando uma solicitação é feita pela primeira vez, ela atinge o servidor de origem, retorna um 200 e nginx armazena essa resposta. Se eu fizer outra solicitação, posso ver no cabeçalho X-Cache-Status que o cache foi atingido. Quando eu esperar um tempo sabendo que o cache terá expirado, posso ver que o nginx atingiu meu servidor de origem fazendo um GET condicional porque eu tenho proxy_cache_revalidate on; definido.

Quando eu verifico se o recurso foi alterado no meu aplicativo no servidor de origem, não vejo e retorno um 304 com um novo cabeçalho Expires . Alguns podem argumentar por que você está retornando um novo Expires cabeçalho se o servidor de origem diz que nada mudou e você está retornando 304. A resposta é, o HTTP RFC diz que isso pode ser feito link

Uma coisa que eu notei, não importa quais cabeçalhos eu adicione ou modifique, quando o servidor de origem retornar 304, o nginx dará uma resposta com o primeiro conjunto de cabeçalhos de resposta que ele viu para esse recurso.

Além disso, se eu alterar o valor do cabeçalho Cache-Control:max-age da primeira solicitação quando eu retornar a resposta 304, parece que nginx obedece ao novo valor, pois meu recurso é armazenado em cachê para essa hora, mas o valor do cabeçalho de resposta é o que foi dado em a primeira solicitação não é o valor que modifiquei na resposta 304.

Estou executando nginx version: nginx/1.10.1

    
por Jon 10.09.2016 / 12:29

0 respostas

Tags