我正在使用图像缓存系统,该系统根据网址路线生成不同的图像。源图像位于文档根目录之外,缓存版本将添加到webroot中的/ cache中。简而言之,在Flash中,如果我将Loader
指向路径,我第一次收到“Load Never Completed”错误(如果尚未生成缓存的图像)。
Error opening URL 'http://characters.dev/cache/Pledges/16107/48_48c/jen001.jpg'
Error #2036: Load Never Completed. URL: http://characters.dev/cache/Pledges/16107/48_48c/jen001.jpg
仍然会生成缓存的图像,下次运行应用程序时,实际文件会加载而不会出错。我在生成初始图像并编写它时已经发送了正确的标题,所以我想知道为什么flash没有得到响应(似乎在浏览器窗口中工作正常)。
header("Content-type:image/jpeg");
echo $this->getResponse()->setBody(file_get_contents($cachedFile));
有关如何解决此问题的任何想法?这些错误似乎“困扰”了flash应用程序。
如果有帮助,这是响应标题:
请求生成图片:
HTTP/1.1 200 OK
Date: Tue, 23 Jun 2009 17:52:49 GMT
Server: Apache
X-Powered-By: PHP/5.2.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=6b746d4ed010c288a824522597698ea2; expires=Fri, 24-Jul-2009 17:52:50 GMT; path=/; domain=.characters.dev
Content-Length: 3575
Content-Type: image/jpeg
缓存图片时的请求:
HTTP/1.1 200 OK
Date: Tue, 23 Jun 2009 17:53:27 GMT
Server: Apache
Last-Modified: Tue, 23 Jun 2009 17:52:50 GMT
ETag: "24e6c62-df7-a8bd0080"
Accept-Ranges: bytes
Content-Length: 3575
Content-Type: image/jpeg
答案 0 :(得分:2)
我遇到了类似的问题,要阻止出现你想要捕获的错误IOErrorEvent.IO_Error
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError_handler, false, 0, true);
public function ioError_handler(event:IOErrorEvent):void
{
Alert.show(event.toString());
}
虽然这摆脱了错误,但有些图片没有加载到Opera中。最后,我通过将图像处理程序代码(asp.net c#)更改为
来实现此目的context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.ContentType = "image/jpg";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetNoStore();
context.Response.Cache.SetExpires(DateTime.MinValue);
context.Response.BufferOutput = false;
context.Response.BinaryWrite(photo);
在我尝试在浏览器中查看图片之前,照片会加载,但是在Opera中无法完成加载,因此不会触发加载完成事件。
希望这会有所帮助,(即使它是用不同的语言)
答案 1 :(得分:2)