在 Mac 上的 Google Chrome 中禁用缓存以便在 Flex/Flash 开发中使用

4

如何在Mac上禁用Google Chrome的缓存,以便在开发Flash应用程序时,每次都会加载新的电影?

请给予建议,我无法确定我查看的.swf版本是否是最新版本。

一个解决方案可能是让Flex编译器将时间戳附加到.swf文件名中,这是可能的吗?

谢谢!

3个回答

4
在您的嵌入代码中,无论您何时使用swf文件,都需要在查询上放置一个随机数或时间戳。每当有更改查询字符串的情况时,浏览器将不会缓存页面。
"MySWFName.swf?t=" + new Date().getTime();

最好的方法是使用SWFObject将您的SWF嵌入,代码如下。
在HTML body标签中添加以下内容。
<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文件中的代码,它将为您生成值。 :)


我喜欢它,但我想我会使用Rails来解决这个问题。如果模式是开发模式,它将放置时间戳,否则不会有时间戳!谢谢! - andrewpthorp
你仍应该使用SWFObject来嵌入你的swf,无论是在rails还是非rails环境下。这一行代码是你所做的关键,只需为你的模式添加if else语句并删除时间戳flashObj = "${swf}.swf?t=" + new Date().getTime(); - The_asMan
我一直使用swfobject。;) - andrewpthorp

4

打开“视图”菜单,选择“开发者工具”。在开发者工具的右下角有一个齿轮图标。点击它,然后勾选“禁用缓存”复选框。


当我最初发布时,这不是一个选项,但现在已经是了。谢谢! - andrewpthorp

0

就个人而言,我不会这样做。缓存存在是有原因的,当你本地运行时不应该禁用它。根据我的经验,最好的方法是通过使用Ant或Maven(如果有自动化引擎更好),使一个“版本”(通常是类中的静态属性)号码每次构建时递增,然后将该版本号作为url参数附加到flash电影中,例如在html中,Movie.swf?version=1.31


1
这太荒谬了。你的意思是每个加载操作都应该添加一些东西到URL中,以方便开发吗?有很多禁用缓存的好理由,特别是在开发过程中。 - Seanonymous

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接