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









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
Beleza de dica hein Alemão, e muito bem complementada pelo @Julio!
Valeu!!!
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
Ei, a tag não apareceu ... vou enviar sem os caracteres de
META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"
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.
O "playerProductInstall.swf" serve para chamar o Atualizador automático quando a versão do Flash Player não é compatível.