[Zope] Caching on-the-fly resized photos (implemented)
Robert Rottermann
robert@redcor.ch
Tue, 30 Oct 2001 22:53:18 +0100
Hi Ron,
first thanks a lot for your efforts.
I have installed the version. And did run update.py (got a Done)
However I get an error when accessing the settings tab on a photo.
Error value: name 'store' is not defined
Source of /AA/xx/bilder/abhoren.jpg/manage_editSettingsForm with fault:
...
<th class="form-label" align="right">Store:</th>
<td>
<dtml-if "store == 'Image'">
...
I probably have created that photo trough a product of mine. So may I could
forego necessary settings???
I have two small wishes:
- I believe you are mixing tabs and spaces to indent your code. On windows I
have problems to edit it. I first have to load it into Wing and have it
reformatted. It would be nice if you could make your editor to use spaces
only.
- please put the update.py in Photo.Extensions. Its easier to use (must not
be copied).
Thanks again
Robert
----- Original Message -----
From: "Ron Bickers" <rbickers-dated-1005080052.5dd4ca@logicetc.com>
To: "Robert Rottermann" <robert@redcor.ch>; "marc lindahl" <marc@bowery.com>
Cc: "Zope listserv" <zope@zope.org>
Sent: Tuesday, October 30, 2001 9:54 PM
Subject: RE: [Zope] Caching on-the-fly resized photos (implemented)
> > -----Original Message-----
> > From: zope-admin@zope.org [mailto:zope-admin@zope.org]On Behalf Of
> > Robert Rottermann
>
> > I have no displays created automatically. However the user can
> > define a size
> > of the picture she wants to use. From this I then create a display.
> > Since the user will check here "story" while working on it the
> > displays are
> > created at a very early state in the game where waiting is tolerable.
> >
> > The idea of timing out displays is appealing.
>
> Ok. I've implemented something that seems like a good idea, but I'm not
> sure how it will fly in production. Also, I don't think it directly
> addresses the above scenario. I could probably extend what I have done to
> create displays (not just the images of predefined displays, but actual
new
> display sizes) when a custom size is requested. I could then tag it such
> that when it times out the entire display (not just the stored image) is
> removed. Robert, would that cover what you're looking for? Read on and
it
> should make more sense...
>
> The current CVS at sf.net/projects/zopephoto has options for on-the-fly
> generation of predefined display sizes and a timeout (in minutes)
associated
> with each Photo. Each of these settings can be set in a Photo Folder to
> control the settings in all contained Photos.
>
> If the "pregenerate" option is chosen and timeout is set to zero, Photos
> behave exactly has they have to date; all displays are generated when the
> Photo is added/updated and the are never purged. If the pregenerate
option
> is not chosen, displays will be generated on-the-fly as they are
requested.
>
> The timeout is the tricky part. Ideally, every time a display is
requested,
> an *access* time of that object would be updated and thus the age of the
> display would be reset to 0. This way, commonly accessed display sizes
> would never be purged. Since ZODB doesn't keep an access time, I could
just
> use the mod time and update it when the display is requested. The problem
> with this is that it would cause a large number of writes to the ZODB, and
> since ZODB is append only, it would quickly bloat.
>
> Since I couldn't come up with a better way to track access time, I
> compromised. Every time a display is requested, the age is compared with
> the timeout. If the age is more than half the timeout, the display's mod
> time is reset to zero and any other display sizes whose age is greater
than
> timeout are purged. With regular ZODB packs (which I assume most people
do
> anyway), and high timeouts (like several days), this might actually work
> okay.
>
> In addition, you can run manage_purgeDisplays() or manage_cleanDisplays()
> which purges all displays (regardless of age) and purges all expired
> displays, respectively. Running these on the Photo Folder will process
all
> contained Photos. There is a button in the management interface for each
of
> these.
>
> I can see there might be the desire to have certain displays never expire
> (such as a thumbnail), but instead of adding extra features for that, I'll
> assume for now that in practice, thumbnails would be viewed often enough
to
> not be purged anyway. We'll see.
>
> Also, manage_purgeDisplays() and manage_cleanDisplays() each take an
> 'exclude' parameter that is a tuple of displays to *not* purge/clean. In
> each case, excluded displays will have their age reset to zero. From the
> management interface, if you "check" a display(s) and then purge/clean,
> those displays will be excluded. This might seem backwards, but I think
> it's more practical.
>
> If you're going to try this out, remember to run the upgrade External
Method
> as outlined in UPGRADE.txt. Any and all feedback and suggestions would be
> greatly appreciated.
>
> Thanks!
> _______________________
>
> Ron Bickers
> Logic Etc, Inc.
>
>
> _______________________________________________
> Zope maillist - Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> ** No cross posts or HTML encoding! **
> (Related lists -
> http://lists.zope.org/mailman/listinfo/zope-announce
> http://lists.zope.org/mailman/listinfo/zope-dev )
>