Acelerar o carregamento da página durante o uso da API do externos

votos
0

Estou construindo um site com o Django que permite aos usuários mover o conteúdo em torno de entre um grupo de serviços de fotografia. Como você pode imaginar o aplicativo faz um monte de hits API.

por exemplo: o usuário se conecta Picasa, Flickr, Photobucket, e facebook para sua conta. Agora precisamos puxar o conteúdo de 4 apis diferentes para manter esses dados de usuários até à data.

agora eu tenho aa função que atualiza cada api e eu executá-los todos simultaneamente via threading. (Todas as APIs que não estão ativados return false na segunda linha, não, não é muita sobrecarga para executar todos eles).

Aqui está a minha pergunta:

Qual é a melhor estratégia para manter o conteúdo atualizado usar essas APIs?

Eu tenho duas idéias que podem funcionar:

  1. Atualizar o apis periodicamente (como um trabalho cron) e tudo o que temos no momento é o que o usuário recebe.

    benefícios:

    • É fácil e simples de implementar.
    • Nós sempre teremos muito bom de dados quando um usuário carrega sua primeira página.

    armadilhas:

    • nós temos que fazer api bate o tempo todo para os usuários que não estão ativos, o que desperdiça muita largura de banda
    • Ele provavelmente fará com que os fornecedores de API infeliz
  2. Acionar as atualizações quando o usuário faz login (em uma pageload)

    benefícios :

    • vamos salvar um monte de largura de banda e correr menos risco de irritar os fornecedores de API
    • não requer quase a quantidade de recursos em nossos servidores

    armadilhas:

    • ou temos de fazer a atualização de forma assíncrona (e não terá nada no primeiro login) ou ...
    • a primeira página vai levar muito tempo para carregar porque estamos recebendo todos os dados API (eu medido 26 segundos desta forma)

Editar : o design é muito leve, o projeto tem apenas duas imagens, um arquivo CSS externo, e dois arquivos javascript externos.

Além disso, o número 26 segundos vem do monitor de rede firebug rodando em uma máquina que estava na mesma rede local que o servidor

Publicado 19/05/2009 em 15:19
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Pessoalmente, eu optaria pelo segundo método que você mencionou. A primeira vez que você entrar, você pode consultar cada um dos serviços de forma assíncrona, mostrando ao usuário algum tipo de barra de atividade / status enquanto os processos estão sendo executados. Você pode, em seguida, preencher a página como você obter os resultados de volta de cada um dos serviços.

Você pode então armazenar em cache os resultados dessas chamadas por usuário para que você não tem que chamar as APIs de cada vez.

Isso alivia a carga em seus servidores, carrega sua página rápido, e fornece ao usuário uma indicação de atividade (juntamente com as atualizações incrimental para a página como suas cargas de conteúdo). Acho que esses somam a melhor experiência do usuário que você pode fornecer.

Respondeu 19/05/2009 em 16:03
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more