[FUG-BR] [OFF] Estrutura de armazenamento de arquivos e redirecionamento no Apache

Wanderson Tinti wanderson em bsd.com.br
Quarta Outubro 7 19:29:10 BRT 2009


2009/10/7 "Fábio Jr." <fjuniorlista em gmail.com>

> Olá pessoal, desculpem  off, mas gostaria de algumas opiniões já que o
> servidor em questão roda FreeBSD.
>
> Tenho um servidor que serve conteúdo estático, sendo que grande parte
> deste conteúdo são imagens. Estas imagens estão todas armazenadas em um
> diretório, sendo que há aproximadamente 4 milhões de imagens dentro
> deste diretório.
>
> Acredito que esta estrutura de armazenamento seja, a médio prazo, pouco
> segura e nada dinâmica, tornando escalabilidade e backup praticamente
> impossível via rede, principalmente pelo fato do servidor estar
> hospedado em outro país.
>
> Pensando em uma maneira de resolver este problema, cheguei a uma
> possibilidade, mas que pode não ser a solução correta. Minha sugestão é
> a seguinte:
>
> Dividir estas imagens, em diretórios baseando-se nos 3 últimos números
> do nome do arquivo.( Os arquivos são nomeados em ordem crescente no
> formato {número}.png ) Ex.:
>
> O caminho absoluto do arquivo 123891.png no servidor é
> /imagens/8/91/123891.png. O arquivo 456891.png, também ficará nesta
> mesma pasta. Porém o arquivo 123456.png ficará armazenado na pasta
> /imagens/4/56/123456.png.
>
> A estrutura se baseia sempre na centena do nome do arquivo (891), sendo
> que o número da centena (8) é a pasta pai, e os números da dezena e
> unidade (91) são o nome da pasta filho.
>
> 1ª questão: existe uma maneira de, fazendo uma requisição para
> http://servidor.com.br/imagens/123456.png, o Apache redirecionar ou
> tratar essa URL para o caminho correto, através de uma expressão regular
> utilizando somente um AliasMatch? (pelas minhas pesquisas na
> documentação do Apache não consegui fazê-lo)
>
> 2ª questão: gostaria de sugestões de como estruturar melhor os arquivos,
> para obter uma melhor performance. Outras soluções possíveis seria a
> criação de diretórios ainda mais específicos ou a migração para um
> serviço de storage distribuído.
>
> Obrigado
>
>
Boa noite.

1º questão: A melhor saída é utilizar expressões regulares com AliasMatch
para levar o usuário ao diretório correto. De uma boa lida sobre o assunto.

2º questão: Na minha opinião, você pode utilizar o Lighttpd para servir seus
conteúdos estáticos. Você deverá ter uma melhora significativa na
performance. Esse link deve servir como referência.

http://www.vivaolinux.com.br/artigo/Otimizando-seu-web-server-com-Apache2-+-Lighttpd?pagina=1


Mais detalhes sobre a lista de discussão freebsd