我在webapp上有一个页面,其中有大约13个由我的应用程序生成的图像,这些图像是用Kohana PHP框架编写的。图像实际上是图形。它们被缓存,因此它们只生成一次,但是当用户第一次访问页面时,所有图像都必须生成,大约一半的图像不会在浏览器中加载。一旦页面被请求一次并且图像被缓存,它们都会成功加载。
进行一些临时测试,如果我在浏览器中加载单个图像,则需要450-700毫秒来加载空缓存(我使用谷歌浏览器的资源跟踪功能进行了检查)。作为参考,加载缓存的图像大约需要90-150毫秒。
即使图像缓存为空,我也会缓存数据和某些应用程序的启动任务,因此在第一次请求之后,不需要获取任何数据。
我的问题是:
正如我所提到的,该应用程序位于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秒,并且几个图像都无法加载。
答案 0 :(得分:0)
在注意到文件大小的差异之后,我意识到我的Kohana的分析器设置不正确,所以它在图像的末尾输出了一堆配置文件数据。每个请求不是很多,但总的来说,它产生了相当大的差异。这些图像现在都加载了。