Se esta querendo aprender ou iniciar novos projetos em Flex, clique aqui

Uma palavra de 5 letras e que incomoda tanto os desenvolvedores. mais seus problemas estão próximos do Fim, abaixo um pouco mais perto da solução.

No meu caso vou explicar em PHP, e se alguém quiser me enviar em outra linguagem eu agradeço muito. Quando você cria um projeto, o flex cria a seguinte estrutura de pastas:

html-template
    AC_OETags.js
    index.template.html
    playerProductInstall.swf
libs
src
    main.mxml

Mais para que serve o index.template.html?

Este arquivo é responsável por criar o arquivo que invocará o SWF na nossa aplicação. Então é com este cara que vamos brincar. Primeiro vamos renomea-lo para ${application}.template.php. Quando você compilar o projeto verás que agora não mais existe um arquivo main.html e sim main.php. Então vamos editar este arquivo.

No inicio, primeira linha do arquivo adicione o seguinte código:

<?php
header("Cache-Control: no-cache");
header("Pragma: no-cache");
?>

Agora com estas linhas acabamos com o cache do main.php, mais o SWF ainda ficará em cache. Mais como tudo tem solução, altere o seguinte bloco:

} else if (hasRequestedVersion) {
    // if we've detected an acceptable version
    // embed the Flash Content SWF when all tests are passed
    AC_FL_RunContent(
            "src", "${swf}?cache=<?php echo microtime() ?>",
            "width", "${width}",
            "height", "${height}",
            "align", "middle",
            "id", "${application}",
            "quality", "high",
            "bgcolor", "${bgcolor}",
            "name", "${application}",
            "allowScriptAccess","sameDomain",
            "type", "application/x-shockwave-flash",
            "pluginspage", "http://www.adobe.com/go/getflashplayer"
    );

Bom, para aqueles que quiserem testar e mandar outras linguagens de programação, agradeço e postarei.

Mais como mem tudo é perfeito, aconselho deixar la o index.template.html, pois executar o projeto ele reclamará do main.html. Então seu projeto ficará assim.

html-template
    ${application}.template.php
    AC_OETags.js
    index.template.html
    playerProductInstall.swf
libs
src
    main.mxml

Gostou? Não esqueça de curtir!

Ou compartilhe o link com seus amigos

6 comentários

Deixe uma resposta

  1. Ho eu gostaria de saber para que ser o "playerProductInstall.swf" e o "nomeDoProjeto.swf", pois eu estou usando um repositorio online e sempre que eu faço uma alteração no meu programa esse arquivo sempre é alterado e fica dando comflito quando a outra pessoa pega la no repositorio, e eu não consigo ignorar para enviar esses arquivossão realmentes necessários para a alicação ou ele podem ser gerados altomáticamente.
    Não sei você vai entender mas esse é minha dúvida.

     
  2. O "playerProductInstall.swf" serve para chamar o Atualizador automático quando a versão do Flash Player não é compatível.

     
  3. Ei, a tag não apareceu ... vou enviar sem os caracteres de

    META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"

     
  4. Fala Eduardo!

    Outra alternativa que também independe de servidor é colocar uma tag meta no html-template do Flex, assim:

    Eu não testei, mas se o browser fizer o que promete, ele não vai guardar nada da app no cache.

    Abraço!

    Elvis Fernandes

     
  5. Beleza de dica hein Alemão, e muito bem complementada pelo @Julio!
    Valeu!!!

     
  6. Eduardo,

    Uma solução genérica, independente do servidor utilizado é fazer o truqe de gerar um URl diferente a cada chamada via javascript, assim:

        AC_FL_RunContent(
                "src", "${swf}?nocache="+(new Date()).getTime(),

    Como vc ve o truque é o mesmo, só que como ele é resolvido internamente no browser via javascript funciona com qualquer tecnologia no servidor.

    E na verdade, vc não precisa nem incluir o código de abertura pra desativar o cache do .html... só precisa desativar o cache do .swf.

    Uso este truque a algum tempo e funciona que é uma beleza.

    continue com este teu blog que é super informativo.

    abraço,
    julio