2011-01-06 63 views
1

我目前正在处理一个需要多次请求url的项目。研究了HTTP代理(Charles)之后,AIR似乎会缓存第一个响应,然后为每个后续请求返回相同的响应。AIR缓存控件如何工作,缓存内容的最大年龄是多少?

有没有人知道如何知道响应是否已被缓存,而不是将URLRequest设置为useCache,但这并不表示响应是否为缓存响应。 digest也没有在URLRequest上设置,尽管它确实提到这仅适用于swz,所以它如何知道内容是否是当前内容?使用responseHeaders响应找出如何长时间保持高速缓存即

  • 缓存控制:最大年龄= 900

也没有人知道如何刷新/清除缓存或者是我们GC的心血来潮,在这种情况下,它是如何知道是将它留在缓存还是现在?

这对我有意义,但我仍然想知道如何管理这个缓存。

更多:我已经测试了一个设置,其中创建了并行URLLoaders(10),它们打开相同的URL以查看该实例中发生的情况。看起来,每个并行请求都会进行,直到给出成功的响应,然后缓存所有后续调用。在成功请求之前发出的呼叫完成。它看起来像已经在处理的项目不使用缓存并返回正确的数据。

其他 AIR运行时甚至不发送“If-Modified-Since”标头,因此缓存甚至不遵守HTTP协议。所以看起来好像Adobe已经实现了它自己的缓存版本,甚至不使用HTTP/1.1头部字段定义。完善。

感谢您的任何帮助。 Simon

回答

0

从URLRequest类的文档看来,它似乎使用了操作系统的HTTP缓存。在Windows 7操作系统上,它似乎使用IE的缓存。

您可以使用像Fiddler这样的HTTP监视器工具,并对其进行验证。

第一个请求是200,后续请求是304.清除IE缓存后。并再次运行该应用程序,您可以看到它导致HTTP 200状态。