我从服务器加载文件(或者更确切地说是图片),从技术上来说是从数据库加载。我一次显示一些,想象它像图像预览,并且我经常再次显示相同的图像。但我不想一次又一次地重新下载相同的文件,所以我想将它存储在本地,如果可用则从那里加载(或者在必要时下载)。如果文件可以存储在AppData / iDontCare中的某个临时文件夹中并在应用程序重启时被删除,我会很高兴。
File.applicationStorageDirectory适合账单,但仅存在于Air。
我错过了什么?
答案 0 :(得分:3)
也许考虑将图像作为字节数组存储在共享对象中,这听起来不是最好的解决方案,但目前想到的是:)
在此处阅读更多内容:Is it possible to store images in the SharedObject of Flash?
除此之外,如果你没有使用AIR或第三方swf包装器,我相信你会受到浏览器缓存的支配,除非我忘记了别的东西。
答案 1 :(得分:2)
重新发明轮子没有任何意义,只需使用正确的标头设置服务器响应,以便Web浏览器可以缓存它们。设置服务器端应该相当容易,并且需要 no 设置客户端,只需像第一次那样再次加载所有内容,它将神奇地来自缓存而不是服务器。
关于缓存标头配置,see this question或简单地谷歌搜索一些更适合您特定情况的内容。
答案 2 :(得分:1)
也许,您可以在客户端尝试图像缓存。 例如:
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
private function setView(index:int):void
{
tn.selectedIndex = index;
switch(index)
{
case 0:
myCache.prioritize("Employees");
break;
case 1:
myCache.prioritize("Managers");
break;
case 2:
myCache.prioritize("Execs");
break;
}
}
]]>
</fx:Script>
<s:HGroup>
<s:Button label="Employees" click="setView(0);"/>
<s:Button label="Managers" click="setView(1);"/>
<s:Button label="Execs" click="setView(2);"/>
</mx:HGroup>
<mx:TabNavigator id="navigator" width="100%" height="100%">
<s:NavigatorContent label="Employees">
<s:VGroup>
<s:BitmapImage source="imgs/BigImage01.jpg"
contentLoaderGrouping="Employees" contentLoader="{myCache}"/>
<s:BitmapImage source="imgs/BigImage02.jpg"
contentLoaderGrouping="Employees" contentLoader="{myCache}"/>
<s:BitmapImage source="imgs/BigImage03.jpg"
contentLoaderGrouping="Employees" contentLoader="{myCache}"/>
...
<s:/VGroup>
</s:NavigatorContent>
<s:NavigatorContent label="Managers">
<s:VGroup>
<s:BitmapImage source="imgs/BigImage06.jpg"
contentLoaderGrouping="Managers" contentLoader="{myCache}"/>
<s:BitmapImage source="imgs/BigImage07.jpg"
contentLoaderGrouping="Managers" contentLoader="{myCache}"/>
<s:BitmapImage source="imgs/BigImage08.jpg"
contentLoaderGrouping="Managers" contentLoader="{myCache}"/>
...
<s:/VGroup>
</s:NavigatorContent>
<s:NavigatorContent label="Execs">
<s:VGroup>
<s:BitmapImage source="imgs/BigImage11.jpg"
contentLoaderGrouping="Execs" contentLoader="{myCache}"/>
<s:BitmapImage source="imgs/BigImage12.jpg"
contentLoaderGrouping="Execs" contentLoader="{myCache}"/>
<s:BitmapImage source="imgs/BigImage13.jpg"
contentLoaderGrouping="Execs" contentLoader="{myCache}"/>
...
<s:/VGroup>
</s:NavigatorContent>
</mx:TabNavigator>
<fx:Declarations>
<s:ContentCache name="myCache" enableQueuing="true"/>
</fx:Declarations>
查看以下链接: http://opensource.adobe.com/wiki/display/flexsdk/Spark+Image