Pergunta

Eu tenho URLs do http://domain/image/⟨uuid⟩/42x42/some_name.png formulário. O servidor Web (nginx) está configurado para procurar um /some/path/image/⟨uuid⟩/thumbnail_42x42.png arquivo, e se ele não existir, ele envia a URL para o servidor (Django via mod_wsgi), que, em seguida, gera a miniatura. Então o backend emite um redirecionamento 302 para exatamente o mesmo URL que foi solicitado pelo cliente, com a ideia de que sobre este segundo pedido o servidor vai notar o arquivo miniatura e enviá-lo diretamente.

A questão é: isso vai funcionar com todos os navegadores? Até agora testando mostrou sem problemas, mas posso ter certeza de todos os agentes de usuário irá interpretar isso como pretendido?

Atualização: Deixe-me esclarecer a intenção. Atualmente esta funciona da seguinte forma:

  1. O cliente solicita uma miniatura de uma imagem.
  2. O servidor vê o arquivo não existe, então ele encaminha o pedido para o servidor.
  3. O backend cria a miniatura e retorna 302.
  4. O backend libera todos os recursos, deixando o servidor compartilham o arquivo recém-gerado para os clientes atuais e subsequentes.

Ter o backend servir a imagem recém-criada é pior, por duas razões:

  1. Duas maneiras de servir os mesmos dados deve ser criado;
  2. O servidor é muito melhor em servir conteúdo estático. E se o cliente tem uma ligação muito lento? O backend não é particularmente rápido nem eficiente para a memória, e mantê-lo na memória enquanto colher-alimentação, o cliente pode ser um desperdício.

Então eu continuo a infra-estrutura de trabalho para a quantidade mínima de tempo.

Update²: Eu realmente aprecio algumas referências RFC ou opiniões de alguém com experiência com muitos navegadores. Todas essas respostas afirmativas são agradáveis, mas eles parecem um pouco fundamento.

Foi útil?

Solução

Se isso não acontecer, o cliente está quebrado. A maioria dos clientes vai seguir laços de redirecionamento até um valor máximo. Então, sim, ele deve estar bem até que seu backend não gera a miniatura, por qualquer motivo.

Você poderia, em vez alterar URLs para ser http: // domain / djangoapp / generate_thumbnail e que vai voltar a miniatura e o tipo de conteúdo adequado e assim por diante

Outras dicas

Sim, não há problema em re-direta para o mesmo URI como se estivesse em anteriormente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top