« análise netcraft, janeiro de 2007 | livro Apache | módulo my_vhost »
janeiro 19, 2007
URLs hierárquicos e intuitivos
Com o advento da web2.0 (cada vez mais virada para os utilizadores), cada vez faz mais sentido criar estruturas de URLs que sejam intuitivas, fáceis de identificar, permanentes (tal como os conteúdos para onde estes apontam) e que possam ser manipuladas pelos utilizadores. Para além de promoverem a usabilidade, facilitam a utilização de páginas de entrada alternativas e mais apropriadas a cada utilizador; assim, é facilmente defensável que ao favorecer mecanismos de navegação alternativos (que não os que o site disponibiliza), o utilizador acaba por encontrar mais rapidamente os recursos que procura.
Uma outra preocupação que deve ser tida em consideração na criação da estratégia de navegação é a sua organização, tendo em conta que os URLs nunca devem desaparecer (tal como os recursos a que se referem), e a estrutura ser hierárquica, facilitando a navegação dos critérios mais genéricos para os mais específicos.
Numa estrutura adequada de URLs, só são utilizados parâmetros para a componente dinâmica em formulários; caso contrário, existe uma camada de abstracção que garante que o acesso a /automoveis/alfa romeo/ é passado correctamente à componente aplicacional (em oposição a /listar.asp?tipo=1&marca=3).
Se a estrutura criação da estrutura de navegação tiver em consideração estas preocupações, conseguimos atingir alguns objectivos interessantes:
estrutura legível e hierárquica
Se a estrutura de navegação for legível e hierárquica, os utilizadores facilmente assimilam a estrutura e os conteúdos disponibilizados.
URLs devem poder ser guardados/memorizados
Se os URLs forem facilmente memorizados, é natural que os visitantes consigam navegar mais facilmente e atingir mais rapidamente o seu objectivo; se o utilizador procura automóveis da marca alfa romeo, deve ser possível fazê-lo utilizando o URL /automoveis/alfa romeo/ e não /listar.asp?tipo=1&marca=3. Para além disso, grande parte dos ataques a aplicações web passa pela manipulação de parâmetros (que de outra forma deixa de ser possível)...
URLs devem poder ser adivinhados
Se o visitante quer procurar livros de banda desenhada, deve ser possível adivinhar a forma mais rápida de chegar ao que procura experimentando através do acesso a /comprar/livros/bd/, /livros/bd/, /banda-desenhada/, etc.
URLs devem esconder a complexidade aplicacional e organização de conteúdos
As alterações de infra-estrutura aplicacional ocorrem cada vez com mais frequência, tendo em conta a evolução de funcionalidades. Isso implica que a hierarquia de URLs também é alterada (/prod/comprar.php?tipo=66&prod=3 passa a /op/int/compra.jsp?SID=e873h4d8776d73), traduzindo-se em alterações visíveis e indesejadas para os visitantes (que só querem chegar rapidamente ao que procuram). Assim, a camada de abstracção deve ser responsável por traduzir o acesso aos dados entre aplicações, mantendo a estrutura visível para os visitantes.
É ainda possível pré-gerar versões estáticas dos conteúdos gerados dinamicamente, e servi-los se existirem no formato estático, libertando a componente aplicacional de algum trabalho.
Apresentar alternativas
Se não existir correspondência entre um URL e um determinado recurso, devem ser apresentadas alternativas ao visitante, de forma a detectar potenciais erros e garantir que o utilizador é direccionado para os conteúdos apropriados.
Estes objectivos podem facilmente ser atingidos com componentes tecnológicas que existem, são fiáveis mas tipicamente são pouco utilizadas. Os mecanismos de reescrita de URLs potenciam outros objectivos, como por exemplo balanceamento, distribuição de conteúdos por vários serviços internos, criação de friendly urls, SEO, etc. e a sua utilização só tem como requisito tempo para definir uma estratégia...possivelmente com a consulta do capítulo 9, onde são abordadas algumas configurações básicas do mecanismo de reescrita.
Publicado por scorpio às janeiro 19, 2007 09:55 AM
Trackback pings
TrackBack URL para esta entrada:
http://apache.weblog.com.pt/privado/tb.cgi/150768