Por que não o AJAX'ify sites inteiros?

11

Existe algum raciocínio sólido sobre o motivo pelo qual os sites não devem ser desenvolvidos com a funcionalidade ajax que carrega partes principais de cada parte (assumindo que existem elementos como o cabeçalho, a navegação etc. que permanecem os mesmos)?

Certamente seria menos intensivo em recursos, pois o servidor não precisaria exibir o conteúdo que aparece em todas as páginas, beneficiando tanto o host quanto o usuário final.

Responda à pergunta levando em consideração:

  • O comportamento javascript dos sites é degradado normalmente em todas as instâncias

  • Para minha pergunta, estou falando de novos sites onde esse comportamento pode ser implementado desde o início, para que tecnicamente não custe dinheiro - não estamos retornando a um produto acabado para implementá-lo.

Anônimo
fonte
1
O gmail é um exemplo de um "site" que é quase totalmente AJAX. Um site totalmente AJAX passa a funcionar melhor para aplicativos da Web do que para sites tradicionais.
Lie Ryan
1
it doesn't technically cost any moneyexceto que sim. Para ter um AJAXified comparável à experiência de navegação regular, você precisará reimplementar os recursos internos do navegador que estão automaticamente disponíveis em sites regulares, como botão voltar, histórico do navegador, cache etc. No mínimo, você ' É necessário reimplementar as funcionalidades de hiperlinks dos manipuladores de eventos de clique (incluindo: visitados e: marcadores ativos).
Lie Ryan
Se você deseja que um site Ajax funcione como um site não Ajax, será necessário replicar a funcionalidade existente. Mas é como pedir ao Super-Homem para andar em vez de voar. Se você pode voar, caminhar é bastante inútil.
Evik James

Respostas:

6

Se o conteúdo puder ser alcançado sem o JavaScript ativado, sua pergunta não fará sentido. Não é "totalmente Ajaxificado" se você puder acessar o conteúdo por outros meios. Realmente, o que você está perguntando é: "está tudo bem em melhorar a experiência do meu usuário através do Ajax?". A resposta é obviamente sim".

editar

Quando o Google lançou sua proposta rastreável do Ajax, ele foi considerado uma péssima idéia . Faz uma leitura interessante.

John Conde
fonte
Muito verdade ... duh momento. Ri muito. Alguma idéia de por que muitos sites importantes não aprimoram a experiência do usuário através da entrega de conteúdo contínuo?
Anônimo
Em primeiro lugar, eu diria que é um custo (é necessário mais código para aprimorar o site com JavaScript, o custo / benefício é muito pequeno para justificá-lo), tempo, maior manutenção associada a mais códigos / camadas para ele aplicação, especialmente quando você considera o dispositivo móvel.
John Conde
+1 para o link "péssima idéia" e seu relato preventivo dos perigos extremos de sites totalmente com AJAX.
Joshuahedlund
4

Primeiras coisas primeiro

Os prós

  • O AJAX pode permitir que você use uma página "base" comum e apenas carregue as áreas de conteúdo, o que pode reduzir o tempo de carregamento para os usuários, uma vez que grande parte da página já está carregada.
  • Pode permitir algum colírio para os olhos, como desbotar e desbotar a área de conteúdo.

Os contras

  • Não funciona bem se a página for baixada.
  • Pode mexer com dispositivos de deficiência.
  • Os espectadores com o javascript desativado não poderão usar o conteúdo, a menos que uma versão não javascript também seja empregada.
  • Muito mais trabalho (realmente precisa ser dito?).

Agora para sua pergunta

Supondo que o site seja degradado normalmente por quem não tem Javascript, a qualidade do resultado depende de como é feito. Por exemplo, se você apenas exibir um link para uma versão não-javascript do nada, é um inconveniente para esses visitantes clicarem em outro link. Por outro lado, se houver uma "página principal" noscript que usaria links tradicionais, funcione melhor para a maioria dos usuários, mas ainda não terá suporte para aqueles que usam dispositivos portadores de deficiência, instâncias em que o usuário procura uma "página" específica de um link etc.

Em suma, no mundo das conexões da Web cada vez mais rápidas, isso não justifica realmente cortar uma pequena quantidade de tamanho de arquivo (presumiremos que todo o próprio Javascript, o CSS e as imagens podem e serão armazenados em cache, deixando apenas a própria página "base" para salvar os bytes) pelos contras que ela pode oferecer, ou seja, a dificuldade extra (embora isso nem sempre seja um bom desafio) e a falta de suporte que ela pode oferecer para alguns usuários.

Em suma, eu diria que depende de você, provavelmente funcionaria muito bem e, para a grande maioria dos usuários, eles provavelmente verão o site como pretendido, mas pessoalmente, eu diria que não incomodar, como não vale a pena o esforço para uma melhoria tão marginal ao tamanho do arquivo.

Mike
fonte
3

Confira http://gawker.com/ - este site carrega quase completamente após o fato. Eles usam "hashbangs" ( http://mydomain.com/#!some_section) para determinar qual página de conteúdo deve ser carregada, a navegação principal permanece estática.

Confira http://mtrpcic.net/2011/02/fragment-uris-theyre-not-as-bad-as-you-think-really/ para obter um breve tutorial sobre o conceito usado por Gawker.

Existem prós e contras, você deve considerar os mecanismos de pesquisa (consulte http://code.google.com/web/ajaxcrawling/docs/getting-started.html ), pessoas com javascript desativado e faça muitos testes.

Com tudo isso dito, o maior argumento contra eles é provavelmente que, quando um usuário aguarda o carregamento de uma página e precisa esperar mais carregamento, ele pode ficar impaciente. Na minha opinião, a melhor prática é carregar o site principal, a navegação e o conteúdo principal de uma só vez (mediante solicitação) e salvar o AJAX para os acessórios não essenciais. Isso funciona com a idéia de aprimoramento progressivo e combina o melhor das duas abordagens.

Chris
fonte
1

Porque provavelmente não é apenas necessário.
Carregar documentos HTML básicos é simples e funciona. A introdução do Ajax adiciona toda uma outra camada de processo para navegadores, código e manutenção do Javascript, material de back-end, URLs estranhos de hashbang e assim por diante. Às vezes isso pode ser justificado, às vezes não. Isso pode economizar alguns recursos do servidor (pode), mas será suficiente para compensar a manutenção? Você precisa avaliar esse por projeto.

Como exemplo, quando o Twitter recebeu sua última reformulação, eles adotaram a abordagem de que não era apenas um site (página), mas um aplicativo, e a coisa toda é fortemente baseada no Ajax, mesmo que a maior parte do que ele possa fazer ser tratado com solicitações de página regulares. Um dos maiores problemas, que ainda acontece agora, embora muito menos, é chegar lá e ser recebido com uma página em branco porque algo no Ajax falhou.

Su '
fonte
1
Você está sugerindo que o Facebook ou o GMail seriam possíveis sem o Ajax? Eles seriam como o correio da web e o MySpace.
Evik James
Para falhas do Ajax, um bom programador pode gravar a detecção desses eventos. Pode ser um prompt para tentar novamente a solicitação ou simplesmente exibir algo que deu errado.
Jomar Sevillejo
0

Na prática, é muito trabalho produzir um site 'totalmente AJAX', especialmente para sites importantes que são muito complicados. Alguns sites que tentam isso são o Google e o Facebook, mas nem eles fazem isso perfeitamente.

Os problemas comuns são a navegação (ou seja, para frente e para trás) e os favoritos, mas existem muitos outros erros com os quais muitos desenvolvedores preferem não ter que lidar. E isso basicamente significa criar duas versões do site para ser compatível com usuários Javascript e não-javascript (e correções para todos os navegadores com suporte ruim para AJAX).

Matt
fonte
Eu acho que os conceitos de "avançar e retroceder" estão sendo preteridos. As pessoas percebem que a web flui como um rio e não é como um livro tangível.
Evik James
0

Sim, deve ser, no entanto, deve ser o contrário.

As partes comuns da página devem ser enviadas por HTTP. Em seguida, um pequeno controle ajax (ou ainda melhores websockets) carrega o conteúdo dinâmico de forma assíncrona.

Obviamente, você precisa primeiro detectar se o javascript está ativado (por cookie) e usar esse método apenas se estiver ativado.

Portanto, você precisa da rota HTTP completa normal e, em seguida, uma rota dos websockets. Isso requer duplicação de código, a menos que você use uma ferramenta como o node.js

A maioria das pessoas "pensa" que simplesmente não vale o esforço extra. E às vezes não é.

Como um aparte, muitas pessoas ajaxificam páginas erradas. Na verdade, eles decidem que você não precisa de uma versão não-javascript e de todos esses URLs de hash bang estranhos e botões avançados de avançar / voltar. Fazer o ajax corretamente requer o histórico HTML5 (o IE9 não o possui). Também requer que o desenvolvedor complete as versões do seu site.

Raynos
fonte
0

Como você afirmou que seria degradado normalmente para visitantes com Javascript desativado, só consigo ver dois problemas reais (e um possível) que podem surgir.

Ruim para Acessibilidade

Os leitores de tela e outras tecnologias assistivas geralmente são desencorajados por alterações dinâmicas do DOM. Eles processam e leem a página de maneira linear, e a alteração do conteúdo da página depois que ela é carregada pode não ser tratada corretamente.

Pode haver técnicas para contornar isso, mas ainda não o examinei completamente.

Maior complexidade

Manter esse tipo de site pode ser complicado. Por exemplo: se você criou um novo layout e alterou o ID da área de conteúdo que estava substituindo pelos seus links AJAX, isso poderia interromper seu esquema de navegação de uma maneira bastante desconcertante.

Esse tipo de comportamento do AJAX também complicaria qualquer análise de tráfego que você esteja fazendo; O Google Analytics não registraria corretamente essas cargas de AJAX sem uma chamada manual para pageTracker._trackPageview('this_page');.

Adicionar mais complexidade ao funcionamento da sua página também eleva a fasquia para novos desenvolvedores; qualquer pessoa que trabalhe no site provavelmente precisará ser informada de como esse comportamento afeta o carregamento da página.

Possível: Carregamento de página mais lento na visita inicial

Dependendo de como você estrutura as coisas, esta página que busca o código AJAX somente poderá entrar após o carregamento completo do documento. Portanto, somente depois que o visitante baixasse a página inteira e, em seguida, o Javascript (se fosse um arquivo externo) e o navegador deles renderizassem e buscassem o conteúdo via AJAX, eles veriam o conteúdo da página.

Cada link subsequente clicado seria mais rápido, mas a busca da primeira página visitada pelo usuário levaria mais tempo que uma versão estática.

O motivo pelo qual eu rotulei isso como um possível problema é que você sempre pode enviar a primeira página estaticamente (já que você terá a versão estática como um fallback) e depois usar o AJAX para os links subsequentes.


Pelo que vale, isso não me parece uma péssima idéia, especialmente para usos sensíveis à largura de banda, como páginas para celular. Você teria que ponderar cuidadosamente as desvantagens para garantir que valesse a pena no seu caso.

Jacob Hume
fonte
0

Ter elementos ajax em uma página é bom quando você tem uma pequena base de usuários, mas quando você tem mais tráfego; você deseja usar uma abordagem mais estática para diminuir o abuso de recursos.

Por exemplo: digamos que você tenha 200 pessoas tentando acessar uma página por segundo. Você tem cerca de 7 consultas ao banco de dados para suas chamadas ajax; isso é 1400, o banco de dados chama um segundo, o que pode atolar um site.

Um site que precisa ser projetado para um tráfego mais alto deve ter páginas externas estáticas, para conteúdo que possa ser exibido de maneira estática. Isso é obtido usando um script do lado do servidor que é executado a cada segundo para reconstruir a página estática, que é buscada pelo usuário final e, assim, você reduziu sua carga de 1400 chamadas de banco de dados por segundo para 7.

É uma abordagem SOA para a criação de sites.

Paulo
fonte
1
O uso do AJAX não significa que você repentinamente desconsidere o cache. Da mesma forma que você pode armazenar em cache uma página inteira, você pode armazenar em cache a parte da página que você carregar com Javascript
DisgruntledGoat
@DisgruntledGoat Eu nunca disse que você não pode usar o AJAX, e esta pergunta não é sobre o uso do AJAX ou não; é por isso que você pode não querer usar o AJAX para tudo em uma página. Atualizei minha resposta para refletir o que eu queria dizer com conteúdo estático.
Paul