【发布时间】:2011-03-31 18:39:46
【问题描述】:
在 google chrome for mac 中禁用缓存的最佳方法是什么,以便在我开发 Flash 应用程序时,它每次都会引入新电影?
请指教,我不知道如何确保我正在查看的 .swf 版本是最新版本。
一种解决方案可能是让 flex 编译器将时间戳附加到 .swf 文件名,这可能吗?
谢谢!
【问题讨论】:
标签: apache-flex google-chrome flex3 adobe cache-control
在 google chrome for mac 中禁用缓存的最佳方法是什么,以便在我开发 Flash 应用程序时,它每次都会引入新电影?
请指教,我不知道如何确保我正在查看的 .swf 版本是最新版本。
一种解决方案可能是让 flex 编译器将时间戳附加到 .swf 文件名,这可能吗?
谢谢!
【问题讨论】:
标签: apache-flex google-chrome flex3 adobe cache-control
转到“查看”菜单,打开开发者工具。开发者工具的右下角是一个齿轮图标。单击它,然后选中“禁用缓存”复选框。
【讨论】:
在您的嵌入代码中,无论您是 swf 文件的哪个位置,您都必须在查询中放置一个随机数或某种时间戳。只要有查询字符串发生变化,浏览器就不会缓存页面。
"MySWFName.swf?t=" + new Date().getTime();
最好的方法是使用带有此代码的 SWFObject 嵌入您的 SWF。
在 html 正文标记中执行此操作。
<body onLoad="loaded()" onunload"doUnload( )">
<div id="replaceMe">Loading content.</div>
</body>
并且对于 javascript 执行此操作(显然将 { } 中包含的内容更改为您的需要
<script type="text/javascript" src="swfobject.js">
<script type="text/javascript">
function loaded() {
var flashvars={}, params={}, attributes={}, tmp, version, width, height, container, flashObj;
flashvars.userName = "testvar";
params.menu = "true";
params.quality = "high";
params.bgcolor = "${bgcolor}";
params.allowscriptaccess = "always";
params.allownetworking = "all";
attributes.id = "${application}";
attributes.name = "${application}";
attributes.align = "middle";
attributes.allowscriptaccess = "always";
attributes.allownetworking = "all";
tmp = "expressInstall.swf";
version = "${version_major}.${version_minor}.${version_revision}";
width = "${width}";
height = "${height}";
container = "replaceMe";
flashObj = "${swf}.swf?t=" + new Date().getTime();
swfobject.embedSWF(flashObj, container, width, height, version, tmp, flashvars, params, attributes);
}
</script>
不要忘记添加 SWFobject 的副本
您将永远不会再遇到缓存问题
编辑:
顺便说一句,如果您用此代码替换 html.template.html 文件中的代码,它将为您生成值。 :)
【讨论】:
就我个人而言,我永远不会那样做。缓存是有原因的,当你在本地运行它时不应该被禁用。以我的经验,最好的方法是每次构建时(通过使用 Ant 或 Maven)增加一个“版本”(通常是类中的静态)编号;如果您也有自动化引擎来做这件事,那就更好了) 然后将该版本号附加为 Flash 电影的 url 参数,例如 html 中的Movie.swf?version=1.31。
【讨论】: