我在一个webapp上有一个页面,它有大约13个由我的应用程序生成的图像,这些图像是用Kohana PHP框架编写的。这些图像实际上是图形。它们是缓存的,所以只生成一次,但是当用户第一次访问页面时,所有的图像都必须生成,大约一半的图像不会加载到浏览器中。一旦页面被请求一次并且图像被缓存,它们都会成功加载。
即使映像缓存是空的,我也会缓存数据和应用程序的一些启动任务,这样在第一个请求之后,就不需要提取任何数据了。
-
为什么图像无法加载?似乎浏览器只是决定在某个时间点之后不下载图像,而不是等待它们全部完成加载。
-
我该怎么做才能让它们第一次加载,并且缓存是空的?
正如我提到的,这个应用程序是在Kohana PHP框架中运行的,它运行在Apache上。另外,我现在已经解决了这个问题,只要数据可用(它来自一个批处理过程),就立即获取页面,这样用户看到图像时,图像总是被缓存起来。不过,这对我来说是一个笨拙的解决方案,我很好奇到底发生了什么。
编辑
:有评论者要求查看请求的标题:
请求URL:
http://domain.com/charts/chart_name/1234/
请求方法:GET
请求标头
缓存控制:最大年龄=0
推荐人:
http://domain.com/home/chart_page
响应标头
缓存控制:无存储,无缓存,必须重新验证,后检查=0,预检查=0
内容长度:6354
日期:2010年5月26日星期三格林尼治标准时间21:10:45
到期时间:1981年11月19日星期四08:52:00 GMT
Pragma:没有缓存
服务器:Apache
缓存映像后,响应头中的唯一区别是:
保持Alive:timeout=15,最大值=96
我正在研究内容长度的奇怪差异,因为它应该是完全相同的内容。我意识到这在让浏览器缓存图像方面可能没有优化,但是一旦图像生成一次,整个页面加载(包括下载图像、脚本等)大约需要1-2秒。如果没有缓存在服务器上的图像,页面加载需要20-30秒,并且一些图像根本无法加载。