Re: question on App::Context
[email protected] (Gunther Birznieks) Wed, 06 Nov 2002 09:34:31 +0800
| Newsgroups | perl.p5ee |
|---|---|
| Organization | eXtropia Pte Ltd |
| Message-ID | <[email protected]> |
Is this really an app context problem then? It seems more like a generic
life cycle problem.
It sounds to me like a layer upon a cache is needed to be able to "tag"
cache items with categorization. Then, it is up to the app to choose in
it's life cycle when to clear certain cache tags.
For example, if you want data to be cleared upon internal redirect, you
would label it as such "internal redirect" in the "Clear" Tag List. Then
you would call a function upon internal direct saying
clear_tag_list("internal redirect") which would clear out all items with
that tag.
Likewise, if you switch realms you would do something like
clear_tag_list("realm") for those cache items that were identified as
being associated with a realm.
Then, it is up to your app framework to make use of this cache tagging
feature that is specific to your app framework's app life cycle. The
life cycle will, of course, be different from app framework to app
framework even if there are many similarities.
Rob Nagler wrote:
>One problem I didn't see addressed: partial context clearing before
>internal redirects. We didn't consider this problem in our first cut,
>but later added "put_durable" to our Request (context) object. Once
>we get around to it, we will be clearing non-durable state when an
>internal redirect happens. The solves a nasty problem of unwanted
>cached state in the context across "tasks" (request processing). It's
>too big of a job to refactor all our old code, so we're stuck with
>some defects related to unexpected cached state and clearing state
>manually before an internal redirect.
>
>The concept is also important in executing "tasks" from the command
>line or in background web jobs. If you are iterating through a list
>of users doing some thing (e.g. sending subscription renewal notices),
>you need to clear the state between each iteration.
>
>Another problem with unexpected cache state is when you change
>security realms. The context must be sensitive to realm changes and
>clear state (ACLs, data) associated with the old security realm before
>entering the new realm.
>
>Rob
>
>
>
>
>
>