[Catalyst] C::P::PageCache patch for reducing duplicate processing

Wade.Stuart at fallon.com Wade.Stuart at fallon.com
Fri Jun 23 17:21:57 CEST 2006






> Wade.Stuart at fallon.com ha scritto:
> >
> >
> >
> >
> >> Perrin Harkins wrote:
> >>> Toby Corkindale wrote:
> >>>> One of the aims of my patch is to avoid the expense of having
numerous
> >
> >>>> processes produce the same code simultaneously. So on the initial
> > bunch
> >>>> of requests, I'll still try and have the code delay all-but-one of
> > them
> >>>> from building the page.
> >>> Presumably this only happens when a new cached page suddenly becomes
> >>> available and is instantly in high demand.  It's not very frequent.
In
> >
> >>> my opinion, that isn't worth the danger of messing with something as
> >>> potentially troublesome as locks that block page generation, but I
> >>> suppose no one is forced to use the locking.
> >> Good point.
> >> I'll try and implement the features so they can be enabled separately.
> >
> > I will second the "I don't think it is worth it" case.  99% of the time
> > caching is set at startup and the only time the case you are coding for
is
> > hit is on the first page load if the second request comes in for the
same
> > page before the page build is done from the first hit.  Seems like such
an
> > outside case that I would be against all that extra locking an special
case
> > code even if it is an option.
>
> Could this condition be triggered by the user hitting "Reload" or "Go"
> many times while waiting for the page ?

Yes,  my case statement was general on purpose.  If a user or multiple
users make multiple requests for the page, and the requests are the first
ones that happen after the server is started,  multiple builds would happen
until the first build is done and stored in cache.  After the cache is
populated there is no window of opportunity for the case to exist (given my
no blocking method is implemented).  That seems to me like very minimal
exposure and acceptable "startup cost" for a site.

Throwing in locking and all that baggage to avoid the outside case (or all
the logic to allow the option of the locking) just seems to go against
KISS.







More information about the Catalyst mailing list