浏览器超时尝试加载图像

时间:2010-05-26 01:33:17

标签: php performance image browser kohana

我在webapp上有一个页面,其中有大约13个由我的应用程序生成的图像,这些图像是用Kohana PHP框架编写的。图像实际上是图形。它们被缓存,因此它们只生成一次,但是当用户第一次访问页面时,所有图像都必须生成,大约一半的图像不会在浏览器中加载。一旦页面被请求一次并且图像被缓存,它们都会成功加载。

进行一些临时测试,如果我在浏览器中加载单个图像,则需要450-700毫秒来加载空缓存(我使用谷歌浏览器的资源跟踪功能进行了检查)。作为参考,加载缓存的图像大约需要90-150毫秒。

即使图像缓存为空,我也会缓存数据和某些应用程序的启动任务,因此在第一次请求之后,不需要获取任何数据。

我的问题是:

  1. 为什么图像无法加载?似乎浏览器决定不在某一点之后下载图像,而不是等待它们全部完成加载。
  2. 我可以做些什么来让他们第一次加载空缓存? 显然,一个选择是减少加载时间,我可以通过分析应用程序来弄清楚如何做到这一点,但还有其他选择吗?
  3. 正如我所提到的,该应用程序位于Kohana PHP框架中,并且它在Apache上运行。顺便说一下,我现在通过在数据可用时获取页面(它来自批处理过程)来解决这个问题,以便在用户看到图像时始终缓存图像。不过,对我来说这感觉就像是一个解决方案,而且我对实际发生的事情感到好奇。


    修改:评论者要求查看请求的标头:

    请求

    请求网址:http://domain.com/charts/chart_name/1234/
    请求方法:GET
    状态代码:200 OK

    请求标题

    缓存控制:max-age = 0
    推荐人:http://domain.com/home/chart_page
    用户代理:Mozilla / 5.0(Macintosh; U; Intel Mac OS X 10_5_8; en-US)AppleWebKit / 533.4(KHTML,类似Gecko)Chrome / 5.0.375.55 Safari / 533.4

    响应标题

    缓存控制:无存储,无缓存,必须重新验证,后检查= 0,预检查= 0 连接:保持活力
    内容长度:6354
    内容类型:image / png
    日期:2010年5月26日星期三格林尼治标准时间21:10:45 到期日:1981年11月19日星期四08:52:00格林尼治标准时间 保持活跃:超时= 15,最大= 94
    Pragma:no-cache
    服务器:Apache
    X-Powered-By:PHP / 5.3.1

    缓存图像后,响应标头的唯一区别是:

    内容长度:1129
    保持活跃:超时= 15,最大= 96

    我正在研究内容长度的奇怪差异,因为它应该是完全相同的内容。我意识到这可能没有在使浏览器缓存图像方面进行优化,但是一旦生成图像一次,整个页面加载(包括下载图像,脚本等)大约需要1-2秒。如果没有在服务器上缓存的图像,页面加载需要20-30秒,并且几个图像都无法加载。

1 个答案:

答案 0 :(得分:0)

在注意到文件大小的差异之后,我意识到我的Kohana的分析器设置不正确,所以它在图像的末尾输出了一堆配置文件数据。每个请求不是很多,但总的来说,它产生了相当大的差异。这些图像现在都加载了。