6

更改托管 Flash 应用程序的域名后,我应该更改 crossdomain.xml 文件。该 crossdomain.xml 托管在 api-server 上,供 flash 应用程序使用。我看到 flash 使用浏览器缓存中的 crossdomain.xml。有什么技巧可以让 flash 不从缓存中获取 crossdomain.xml 吗?也许有任何参数,我可以在对象标签中调用它时传递给 flash?

4

4 回答 4

5

烦人的问题——毫无疑问。

首先:我喜欢缓存——只要我能控制。这就是我如何控制 crossdomain.xml 缓存:

比方说,我们有一个 Flash 应用程序需要来自不同服务器的一些输入。在我的情况下,我们将其配置为 flashvardataSrc=http://www.company.com/data/calendar.xml

所以flash正在寻找 www.company.com/crossdomain.xml ......它被加载一次,然后从用户浏览器缓存中获取,直到他手动刷新它。

解决方案是更改从 crossdomain.xml 获取的子域:

确保例如(!)noCache.company.com/指向company.com 的 documentRoot。Flashvar 被修改为dataSrc=http://noCache.company.com/data/calendar.xml. 实际上,您正在处理与以前相同的文件。

Flash 现在正在寻找noCache.company.com/crossdomain.xml 将从服务器获取的内容,因为该 uri 没有缓存文件。

这取决于您的幻想...如果您允许像 noCache_{numeric_value} 这样的子域,您可以通过访问http://noCache_ {week_of_year}.company.com/data/calendar.xml 轻松处理自己的 TTL ...

每次 crossdomain.xml 更改时,您也可以增加该数值。

于 2011-08-16T16:52:18.810 回答
1

使用以下 apache 指令为文件指定缓存策略:

<Directory /var/www/mysite>
  <FilesMatch "crossdomain.xml">
    Header set Cache-Control "max-age=86400, public, must-revalidate" 
  </FilesMatch>
</Directory>
于 2011-09-13T14:25:20.537 回答
0

如果我不希望它们缓存例如,我会将随机数附加到 xml 文件的末尾。var myXMLURL:String = "myXML.xml?r=" + Math.random()*1000;

浏览器将其视为不同的文件,例如。myXML.xml?r=645 / myXML.xml?r=239

我不确定这是否适用于 crossdomain.xml 文件,但值得快速尝试。

于 2011-02-11T15:59:12.387 回答
-3

我会直接在浏览器中强制重新加载(F5 或 CTRL/CMD-F5)crossdomain.xml 文件,直到我看到它发生变化。只需在浏览器中输入跨域文件的 URL 并继续刷新即可。另外我会清理浏览器缓存。

你应该试试 Firefox 和 firebug,它会告诉你下载的文件是否被缓存。

http://getfirebug.com/

祝你好运,罗伯

于 2011-02-10T10:47:39.717 回答