【问题标题】:Disable cache in google chrome (Mac) for developing in flex/flash禁用 google chrome (Mac) 中的缓存以在 flex/flash 中进行开发
【发布时间】:2011-03-31 18:39:46
【问题描述】:

在 google chrome for mac 中禁用缓存的最佳方法是什么,以便在我开发 Flash 应用程序时,它每次都会引入新电影?

请指教,我不知道如何确保我正在查看的 .swf 版本是最新版本。

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

谢谢!

【问题讨论】:

    标签: apache-flex google-chrome flex3 adobe cache-control


    【解决方案1】:

    转到“查看”菜单,打开开发者工具。开发者工具的右下角是一个齿轮图标。单击它,然后选中“禁用缓存”复选框。

    【讨论】:

    • 我最初发布时没有这个选项,但现在可以了。谢谢!
    【解决方案2】:

    在您的嵌入代码中,无论您是 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 文件中的代码,它将为您生成值。 :)

    【讨论】:

    • 我喜欢它,但我想我会使用 Rails 来解决这个问题。如果模式是开发,它将放置时间戳,如果不是,则没有时间戳!谢谢!
    • 您仍然应该使用 SWFObject 来嵌入您的 swf rails 或不使用 rails。这是您所做工作的关键所在,只需为您的模式添加 if else 语句并删除时间戳 flashObj = "${swf}.swf?t=" + new Date().getTime();
    • 我一直使用 swfobject。 ;)
    【解决方案3】:

    就我个人而言,我永远不会那样做。缓存是有原因的,当你在本地运行它时不应该被禁用。以我的经验,最好的方法是每次构建时(通过使用 Ant 或 Maven)增加一个“版本”(通常是类中的静态)编号;如果您也有自动化引擎来做这件事,那就更好了) 然后将该版本号附加为 Flash 电影的 url 参数,例如 html 中的Movie.swf?version=1.31

    【讨论】:

    • 这太荒谬了。您是说每个加载操作都应该在 URL 上附加一些内容以简化开发?在开发时禁用缓存有很多充分的理由。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多