On Monday 05 February 2001 19:41, Chris McDonough wrote:
Ron, it would be good if you could add a feature request to the Collector about large file object streaming. I'm not superfamiliar with the code there, but I *think* the Image stuff is supposed to break the Image object into smaller subobjects and load each one serially out of the ZODB when it needs to serve them. If it's not doing this properly, it needs to get fixed.
looking quickly through the image code from cvs, its apparent that images are broken up into separate persistent chunks when uploaded into a primitive linked list structure thats stored in the zodb. however in serving them zope loads all the chunked objects anyways, (without invalidating the object (thread zodb) cache on any), so there is no benefit on image serving in terms of memory performance, since the entire image needs to be loaded up to serve to the client anyway and the all of the chunks will be resident in the PicklerCache at that point. which brings up an interesting question of how do you remove objects from the PicklerCache. it looks like a call to self._p_jar.cache.gc_item(key,self) will do it?, but it also looks like self._p_changed=None will also work? two notes, 1. this is a very specific condition when you don't want to serve an image very frequently 2. it won't decrease memory usage as reported by ps unless multiple images are requested on a page. (each image = request = transaction?) kapil