Accelerating images without proxy
Hi I have been asking about database cache parameters recently here. The replies received recommended using squid as a reverse proxy. However, the site I am trying to accelerate has large areas, which are password protected and configuration of squid looks like a minor nightmare. I have analysed the problem and I believe I could get a major boost if we could just cache some images. There are about two dozen images, mainly logos and navigation images that are used on almost every page. If I could just cache these, that should help a lot. (We are not in control of the HTML! Believe me, I do not consider this good practice. But it was a major reason why we were able to convince the customer to use Zope because it allowed for his preferred designers to do the HTML; we only did the "functionality".) I looked into the various internal mechanisms (Accelerated HTTP Cache Managers, Cache-tab on image object) and read the help. But I'm still not sure if this is helpful. The help text constantly tells me that some operations using cache can backfire and become more expensive. Can anybody share any light on this issue, please? Cheers Marc
Marc Burgauer wrote:
I have analysed the problem and I believe I could get a major boost if we could just cache some images. There are about two dozen images, mainly logos and navigation images that are used on almost every page. If I could just cache these, that should help a lot.
I looked into the various internal mechanisms (Accelerated HTTP Cache Managers, Cache-tab on image object) and read the help. But I'm still not sure if this is helpful. The help text constantly tells me that some operations using cache can backfire and become more expensive.
Can anybody share any light on this issue, please?
You should use an Accelerated HTTP Cache Manager, which only caches your images (see Tab: Associate -> Select "Image"). This will add some additional headers to the image-responses which tell proxies on the way or the clients browsers to cache the images for the specified time. All your clients won't request the images anymore from the server which should take some load from the server. A RAMCacheManager will bring you no performance boost for images, because this one is only useful for "rendered" pages/elements like ZPT or DTML. Cheers, Maik
Maik Jablonski wrote:
Marc Burgauer wrote:
I have analysed the problem and I believe I could get a major boost if we could just cache some images. There are about two dozen images, mainly logos and navigation images that are used on almost every page. If I could just cache these, that should help a lot.
I looked into the various internal mechanisms (Accelerated HTTP Cache Managers, Cache-tab on image object) and read the help. But I'm still not sure if this is helpful. The help text constantly tells me that some operations using cache can backfire and become more expensive.
Can anybody share any light on this issue, please?
You should use an Accelerated HTTP Cache Manager, which only caches your images (see Tab: Associate -> Select "Image"). This will add some additional headers to the image-responses which tell proxies on the way or the clients browsers to cache the images for the specified time. All your clients won't request the images anymore from the server which should take some load from the server.
Images delivered by zope are quite extensively cached on the browser side per default, even without configuring something in zope. I.e. zope sends appropriate "not modified" headers if it gets the right request from the browser (which nearly all browsers do). You can see this when grepping the logs for "304", or using a log analyzer. I just checked on two sites of us, and on one, which has many different images, I get 10% of all responses to be "304", while on the other, whose images consist mainly of navigation buttons, I get 50% of all images cached. This was btw. a big problem for us using localizer, because when switching languages because the images wouldn't change. Since sending the 304 shouldn't be expensive, I doubt it will help much for the speed of the site, but esp. not if it is network I/O bound. One thing which is important is to link the navigation images with their absolute url, not using acquisition, so that the browser will be able to see that the images are identical. cheers, oliver
participants (3)
-
Maik Jablonski -
Marc Burgauer -
Oliver Bleutgen