Que cabeçalhos adicionar para o cache de arquivos mais eficiente?

3

Então eu tenho esse cabeçalho de resposta para arquivos estáticos no meu servidor nginx.

Cache-Control:max-age=2592000
Connection:keep-alive
Date:Sat, 11 Dec 2010 22:28:13 GMT
Expires:Mon, 10 Jan 2011 22:28:13 GMT
Last-Modified:Sat, 11 Dec 2010 22:11:35 GMT
Server:nginx/0.6.32

Eu penso em remover a assinatura do servidor para reduzir o tamanho da resposta. O que devo adicionar na configuração do meu servidor para fazer com que o navegador use os arquivos nem mesmo fazendo uma solicitação ao servidor e, em geral, torná-lo o mais eficiente possível? Atualmente eu poderia ter o js no servidor tão rápido: link

Editar: Eu sei que adicionou essa propriedade: add_header cache-control public; E os cabeçalhos de resposta são assim:

Cache-Control: max-age=31536000
Cache-Control: public

Porque eu tenho o expira 1y; definido também. Existe uma maneira de se juntar a eles?

Também verifiquei as respostas do arquivo javascript no Facebook e eles usam essas técnicas:

HTTP/1.1 200 OK
Content-Type: application/x-javascript; charset=utf-8
Last-Modified: Sat, 01 Jan 2000 00:00:00 GMT
Pragma:
Content-Encoding: gzip
X-Cnection: close
Content-Length: 11724
Vary: Accept-Encoding
Cache-Control: public, max-age=31239788
Expires: Thu, 08 Dec 2011 23:43:19 GMT
Date: Sun, 12 Dec 2010 10:00:11 GMT
Connection: keep-alive

O que a propriedade Vary fez? Eu acho que vou aplicar a última modificação há anos atrás, como eles fizeram.

    
por Rihards 11.12.2010 / 23:32

3 respostas

0

Isso não está relacionado ao armazenamento em cache, mas, como você está comparando seus cabeçalhos com os do Facebook, assumo que sua preocupação é melhorar a experiência do usuário em seu site.

Uma que eu vejo falta do seu cabeçalho é a compactação. O nginx e outros servidores Web permitem que você comprima o conteúdo antes de enviá-lo ao cliente, reduzindo significativamente o total de transferência de dados.

Você pode usar o link abaixo para configurar a compactação em sua instância do nginx.

link

Ao fazer a compressão, lembre-se de lidar com navegadores MSIE mais antigos que não lidam com a compactação muito bem. Há mais informações em uma postagem relacionada

Em segundo lugar, se possível, use um domínio diferente para o seu conteúdo estático. Isso reduzirá o tamanho da solicitação do cliente porque o cookie não será passado. Exemplo O Yahoo usou o yimg.com para seu conteúdo estático, ou seja, JS, CSS, images

    
por 13.12.2010 / 03:56
0

O campo de cabeçalho de solicitação If-Modified-Since é usado com um método para torná-lo condicional: se a variante solicitada não tiver sido modificada desde o horário especificado nesse campo, uma entidade não será retornada do servidor; em vez disso, uma resposta 304 (não modificada) será retornada sem qualquer corpo de mensagem.

   If-Modified-Since = "If-Modified-Since" ":" HTTP-date

Um exemplo do campo é:

   If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Um método GET com um cabeçalho If-Modified-Since e nenhum cabeçalho Range solicita que a entidade identificada seja transferida somente se tiver sido modificada desde a data fornecida pelo cabeçalho If-Modified-Since. O algoritmo para determinar isso inclui os seguintes casos:

você já tem a idade máxima para que também seja aplicada

você deseja armazenar em cache e também obter GET condicional nenhuma resposta é enviada para o cliente

    
por 12.12.2010 / 00:40
0

Silviud está falando sobre um cabeçalho que é enviado pelo cliente como parte da solicitação ao servidor para que o servidor saiba se deve enviar um 304 Not Modified ou todo o conteúdo do arquivo / página como resposta.

Embora a remoção do cabeçalho do servidor não cause danos, ele também não será muito útil, exceto no caso de pequenas respostas (por exemplo, não modificadas). Você pode considerar adicionar "public" ao seu cabeçalho Cache-control para declarar explicitamente que os caches compartilhados podem armazenar em cache o conteúdo.

    
por 12.12.2010 / 01:00