Contexto
Trabalhando como desenvolvedor freelancer, frequentemente criava sites completamente baseados em XSLT. Em outras palavras, a cada solicitação, um arquivo XML é gerado, contendo tudo o que precisamos saber sobre o conteúdo da página: o nome do usuário atualmente conectado, as entradas do menu superior, se esse menu for dinâmico / configurável, o texto para exibido em uma área específica da página, etc. Em seguida, o processo XSL (armazena em cache etc.) na página HTML / XHTML para enviar ao navegador.
É um bom ponto para facilitar a criação de sites de pequena escala, especialmente com PHP. É um tipo de mecanismo de modelo, mas eu prefiro outros mecanismos de modelo porque é muito mais poderoso que a maioria dos mecanismos de modelo e porque eu o conheço melhor e gosto dele. Também é possível, quando necessário, fornecer acesso a dados XML brutos sob demanda para um acesso automatizado, sem a necessidade de criar APIs separadas.
Obviamente, ele falhará completamente em qualquer site de média ou grande escala, pois, mesmo com boas técnicas de cache, o XSL ainda diminui o desempenho geral do site e requer mais servidores da CPU.
Questão
Navegadores modernos têm a capacidade de pegar um arquivo XML e transformá-lo com um arquivo XSL associado declarado em XML como <?xml-stylesheet href="demo.xslt" type="text/xsl"?>
. O Firefox 3 pode fazer isso. O Internet Explorer 8 também pode fazê-lo.
Isso significa que é possível migrar o processamento XSL do servidor para o lado do cliente para 50% dos usuários (de acordo com as estatísticas do navegador em vários sites nos quais posso implementar isso). Isso significa que esses 50% dos usuários receberão apenas o arquivo XML a cada solicitação, reduzindo a largura de banda dos servidores e dos servidores (o arquivo XML é muito menor que o analógico HTML processado) e a utilização da CPU do servidor.
Quais são as desvantagens dessa técnica?
Pensei em vários, mas não se aplica a esta situação:
- Implementação difícil e a necessidade de escolher, com base na solicitação do navegador, quando enviar XML bruto e quando transformá-lo em HTML. Obviamente, o sistema não será muito mais difícil que o atual. A única alteração a ser feita é adicionar um link de arquivo XSL a cada XML e adicionar uma verificação do navegador.
- Mais uso de E / S e largura de banda, pois o arquivo XSLT será baixado pelos navegadores, em vez de ser armazenado em cache pelo servidor. Eu não acho que será um problema, pois o arquivo XSLT será armazenado em cache pelos navegadores (como imagens, CSS ou arquivos JavaScript, na verdade, são armazenados em cache).
- Possivelmente alguns problemas no lado do cliente, como talvez problemas ao salvar uma página em alguns navegadores.
- Dificuldade para depurar código: é impossível obter uma fonte HTML que o navegador está realmente usando, pois a única fonte exibida é o XML baixado. Por outro lado, raramente vejo o código HTML no lado do cliente e, na maioria dos casos, é inutilizável diretamente (o espaço em branco está sendo removido).
ngx_http_xslt_module
ou todos os quatro). Eu duvido muito que o suporte ao cliente do XSLT 2.0 seja melhor.