在As3中,我使用
_loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHttpStatus);
检测Loader
的httpstatus代码。在回调函数中,当google chrome中显示的httpstatus代码正好为304时,httpstatus代码为200。
答案 0 :(得分:0)
实际上,这应该是相同的,因为这些状态是对Web服务器发送的请求的响应,但是当请求的文件位于缓存中时,Flash会一直处于200状态,因为在这种情况下,懒惰的Flash甚至没有向Web服务器发送请求,并给你一个假的200 HTTP状态。使用Air,情况有点不同,因为尽管Air每次都有真正的请求,但它为真实200和304 HTTP状态(未修改)提供了200个HTTP状态。
要验证我们可以使用这个简单的ActionScript代码:
var loader:URLLoader = new URLLoader();
loader.addEventListener(
HTTPStatusEvent.HTTP_STATUS,
function(e:HTTPStatusEvent):void {
trace('http status : ' + e.status)
}
)
loader.load(new URLRequest('http://www.example.com'));
当然,Flash会为您提供可达内容的200 HTTP状态。您可以尝试使用在线网址,然后将您的计算机与互联网断开连接,您将获得相同的值:200。
对于Air,第一个请求它是真正的200,但第二个,如果文件是cachebal,你将获得200但实际上Air接收304响应。要验证这一点,您可以使用本地Web服务器,您会在其日志中找到Web服务器响应,第一个请求为200,第二个请求为304,或者您可以使用捕获网络流量工具Fiddler和您将直接看到Air应用程序收到的实际响应。
我希望现在对你来说更清楚。
答案 1 :(得分:0)
使用随机数生成“新”链接并避免缓存效果
var loader:URLLoader = new URLLoader();
var noCache:Number = Math.random()
loader.addEventListener(
HTTPStatusEvent.HTTP_STATUS,
function(e:HTTPStatusEvent):void {
trace('http status : ' + e.status)
}
)
loader.load(new URLRequest('http://www.example.com?c='+noCache));