> From: Rune Sandnes [mailto:[EMAIL PROTECTED]]
>
>
> I have looked at various methods of deciding when a cached object is
no
> longer
> valid (including DBPrism cache invalidator suggested by Marcelo Ochoa)
>
> What I really want to do is simple, cache all pages for 30 minutes
with
> DeltaTimeCacheValidity, but be able to destroy the cache from the
> Content
> Management System. When working with documents in the CMS they are
> called
> with a nocache parameter, and Cocoon serves them uncached.
>
> public CacheValidity generateValidity() {
> // If we are called with nocache parameter we do not cache
> if ( request.getParameter("nocache") == null ) {
> return new DeltaTimeCacheValidity(30);
> } else {
> return null;
> }
> }
>
> What I was hoping for was that when CacheValidity returns null, it
will
> destroy the cached object for good, but that doesn't seem to happen.
The
>
> next time the document is called from the site without the nocache
> parameter,
> I get the old version (for the duration of the 30 minute cache
period).
>
> So, is there any way I can instruct Cocoon to destroy a particular
> cached object permanently?
You need to return such a ValidityObject (serializable), which will
return "false" when your XSP need it. To clarify this moment, here is
simple example:
---------------------
class MyCacheValidity extends DeltaTimeCacheValidity {
boolean cache;
public MyCacheValidity (int minutes, boolean cache) {
super(minutes);
this.cache = cache;
}
public boolean isValid(CacheValidity validity) {
// check "cache" parameter from the XSP
if (((MyCacheValidity)validity).cache)
return false;
// Check 30 min
return super.isValid();
}
}
---------------------
public CacheValidity generateValidity() {
// If we are called with nocache parameter we do not cache
if (request.getParameter("nocache") == null) {
return new MyCacheValidity(30, false);
} else {
return new MyCacheValidity(30, true);
}
}
---------------------
PS You should know that there are two validity objects for a given cache
key: One is in cache (generated by XSP and cached on previous request to
this XSP), and another is generated by your XSP to be compared with the
cached validity. Take a look at the TimeStampCacheValidity.java.
Vadim
> Cocoon 2.0.2, Tomcat 4.0.3
>
> Thanks,
> Rune,
> Trondheim,
> Norway
>
---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>
To unsubscribe, e-mail: <[EMAIL PROTECTED]>
For additional commands, e-mail: <[EMAIL PROTECTED]>