我目前正在开发一个需要多次请求网址的项目。在研究了HTTP代理(Charles)之后,似乎AIR将缓存第一个响应,然后为每个后续请求返回相同的响应。
除了将URLRequest设置为useCache之外,是否有人知道如何知道响应是否已被缓存,但这并未说明响应是否为缓存响应。 digest也没有设置在URLRequest上,虽然它确实提到这仅适用于swz,那么它如何知道内容是否是当前内容? responseHeaders是否用于查明保存缓存的时间,即
也有人知道如何刷新/清除缓存,或者我们是GC的心血来潮,在这种情况下,它是如何知道是将它留在缓存中还是现在?
这对我来说很有意义,但我仍然想知道如何规范这个缓存。
更多:我已经测试了一个设置并创建并行URLLoaders(10)的设置,它打开相同的URL以查看该实例中发生的情况。似乎每个并行请求都会被发出,直到给出成功的响应,然后缓存所有后续调用。然后完成在成功请求之前发出的呼叫。看起来已经处理的项目不使用缓存并返回正确的数据。
附加 AIR运行时甚至不发送“If-Modified-Since”标头,因此缓存甚至不遵守HTTP协议。因此,似乎Adobe已经实现了自己的缓存版本,甚至不使用HTTP / 1.1标头字段定义。完美。
感谢您的帮助。 西蒙
答案 0 :(得分:0)
从URLRequest类的文档中,它似乎使用操作系统的HTTP缓存。在Windows 7操作系统上,它似乎正在使用IE的缓存。
您可以使用像Fiddler这样的HTTP监控工具,并验证这一点。
第一个请求是200,后续请求是304.清除IE缓存后。并再次运行该应用程序,您可以看到它导致HTTP 200状态。