Flex X Cache – 2° Round

A discussão é antiga, a guerra é longa, mais desta vês novamente eu ganhei.

No exemplo anterior, Flex X Cache – 1° Round,  não gostei do fato de que a cada vês que o usuário carregar o sistema, terá que carregar o SWF completo.

Então para resolver este problema, eu cheguei a mais fácil das soluções, renomear o Application!!

Por exemplo, criei um projeto novo hoje e chamei o application principal de main20090804.mxml, e publiquei no servidor. Agora imagina que dia 10/09/2009 o responsável pelo sistema, usuário do IE-ca me pede uma atualização. Eu faço e renomeio o application para main20090910.mxml.

Agora quando vou publicar no servidor eu renomeio o HTML que foi gerado para index.html. Simples assim e assim você terá o histórico de todas as versões.

Veja ao lado um dos sistemas como esta de atualização. O ultimo html gerado é renomeado e tenho o histórico de todas as alterações que foram feitas.

Você pode seguir todas as respostas a esta entrada através do RSS 2.0 feed. Você pode deixar um comentário, ou colocar um link em seu site.



10 comentarios »

 
  • Rafael says:

    Valeu, ótima solução!

  • Froskie says:

    Eu confesso que não entendi. Se você não gosta que o usuário carrega o SWF inteiro mas você renomeia forçando ele a carregar de novo. A aplicação não seria divida em módulos? Acho que me perdi nessa…

  • Alemão says:

    @Froskie é necessário quando faz atualização no sistema. Neste caso preciso que seje ignora o que esta no cache e carregado o novo que esta no servidor

  • Jan says:

    Cara isso é extremamente desnecessário.
    Isso ajuda o usuário mais vai atrapalhar seu trampo.

    Uma solução limpa deixar as dependências sem cache e o binário no cache, isso vai manter tudo atualizado sem peso demais pra o usuário a cada visita.

    Agora se seu swf é pesado d+, seu approach ta errado, vc pode otimizar mais.
    Eu nem quero imaginar como vc controla isso.

  • Alemão says:

    @Jan O problema não é o SWF pesado demais, e sim as atualizações que preciso fazer no sistema. Estas atualizações devem ser carregadas por todos os usuários sem necessidade de limpar cache.

  • Jan says:

    Ok mas veja um exemplo na prática: Se por exemplo você faz duas atualizações no mesmo dia? E se por alguma razão você precise dar um rollback pra uma delas?

    Agora imagina essa sua pasta c/ um arquivo? E vc controlando a versão de sua aplicação em um git por exemplo? Melhorou não?

    Voltando ao objetivo, se você mudou alguma funcionalidade lógica, não tem como, o usuário precisa baixar o arquivo inteiro certo? Pelo que entendi, vc quer usar o cache a favor, se não ha updates, vale a versão em cache, senão baixa a nova.

    Você pode simplesmente colocar no request do swf no seu index algo assim:
    main.swf?version=N
    Onde N é o número do build do seu app por exemplo.

    É legal ter essa preucupação com o usuário, pq é bem chato o cara dar um refresh na pagina e tudo aquilo começar de novo.

    Ta ai a dica ;)

  • Mario Junior says:

    Em 2005 a Adobe já publicou um TechNote sobre o cache de SWFs
    http://kb2.adobe.com/cps/147/tn_14743.html

  • Alemão says:

    @Mário O cache é util mais as vezes atrapalha. Então este segundo POST escrevi para manter o cache a meu favor. No O Cache é util para economizar recursos de rede enquanto uma nova versão não é lançada.

  • Anônimo - 189-041-67-209.xd-dynamic.ctbcnetsuper.com.br says:

    Não é mais fácil aprender a configurar o cache do servidor web ao invés de fazer gambiarra? O=)

  • Não.

    Você terá que fazer isso em todos os clientes que utilizarem seu sistema.

    Imagina pedir a todos?

 

XHTML: Puedes usar las siguientes etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>