David Sean Taylor escribió:

> Thanks Santiago,  I believe the Observer pattern to be a good choice.
>
> The old system never really worked for me, there's either a bug in expire()
> or its too complicated for my feeble mind...
> Anyway, Im very glad to hear you are working on a new impl.
>
> Im now discussing how the new system will work, please excuse me if Im being
> redundant, but I really want to understand how this works!
>
> How will the cache determine when a file is modified on the file system?

The DiskCache is NOT for caching local files, but for caching external URLs.
One of the main problems that we faced is that it is difficult to know the
difference. Currently, everthing local is served "as is" i.e. as a url, while
every resource coming from a different server is cached in the WEB-INF/cache
subdirectory.


>
> Will it run a daemon, which will periodically poll the file system and check
> the modified date?

The Disk Cache has a Daemon, that runs every so and so, and checks the
lastModified and Expires fields of each URL. If the URL was modified, it is
reloaded and all portlets depending on this url are expired (at least it was
like this)


>
> Or is this controlled by the expire method() - is the expire method used to
> set the polling frequency?
> Alternatively, I assume this can be done by someone 'deploying' an updated
> file, and then calling the refresh() method

The DiskCache does not handle files.

>
> > You should think of the disk cache as URLManager, or ResourceManager. It
> > is on
> > charge of synchronising fetching and caching of external resources, more
> > or
> > less like what a HTTP proxy would do.
>
> when you say caching, where is the caching occurring? Is the DiskCache also
> for resources on other html servers?
> I thought it was only for local files. If its for local files, what exactly
> is being cached if it doesn't use a memory cache?
>
> > The portlet used a memory cache, so your portlet should be cached in
> > memory,
> > until it expires. Once it expires,  it will be reinstantiated. Look at
> > the
> > code in PortletFactory.
>

The memory cache is a different one. It is used to cache objects in memory. It
is governed by an expiration mechanism. Portlets use this kind of memory cache
to avoid recomputing them, while the remote rss url that defines RSSPortlets is
stored by the disk cache to avoid going to the network every time..

>
> yes, i need to look at this.
> Im not quite sure of the purpose of expiring portlets

It is so that the items in the portlets can be recalculated from the url. If
the url was refreshed by the DiskCacheDaemon in the while, the portlet will
have new content. If not, it will simply be recalculated.

I am not very good at explaining these things. :-)

>
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]]On Behalf Of Santiago Gala
> > Sent: Tuesday, January 09, 2001 5:55 PM
> > To: JetSpeed
> > Subject: RE: XSLPortlet , JetspeedContent
> >
> >
> > David Sean Taylor escribió:
> >
> >
> > I'll send it CC to the list, with the old subject, so that the answer is
> > public and other people can contribute.
> >
> > > Hi Santiago,
> > >
> > > I think you may have missed my email yesterday on the mailing
> > list, so Im
> > > including it again below.
> > > Hope you don't mind me asking you directly, but I often do not receive
> > > responses to threads that I start on the mailing list, for what
> > reasons I
> > > really dont know.
> > >
> >
> > I was waiting until now, that I'm back in the office, to answer. This
> > time I
> > even flagged it to make sure I would remember,
> >
> > >
> > > On a more serious subject :), I believe that you and I have broken the
> > > build.
> > > On your part, NewRSSPortlet uses the JetspeedXMLReaderFactory, which was
> > > deleted.
> > >
> >
> > It seems that I forgot to commit this one. I have just done it. Sorry
> > aboutthat one :-(
> >
> >
> >
> > >
> > > Here is the email from yesterday:
> > >
> > > "
> > > Santiago, could you help me in understanding how the DiskCache works?
> > > What I'd like to do is cache content in memory, but when the resource
> > > changes on the disk, then refresh it.
> >
> > With the old cache, entries are checked only when the DiskCacheDaemon
> > runs.
> > The method "hasExpired" for a cache entry tells wether it has expired,
> > and
> > something like:
> >
> > URLFetcher.refresh(  url ) should try to refresh (in the same thread)
> > and
> > return true, if it got refreshed, or false, if either it was not expired
> > or
> > there was some problem, or it was not modified in the server.
> >
> > The whole interface is changing. For the new version, I am implementing
> > the
> > cache entries as java.util.Observable, so that any object can declare
> > itself
> > as an observer of the entry, and be notified either when it expires or
> > when it
> > gets refreshed. Also, the entries will have a refresh method that will
> > handle
> > the refresh, if needed.
> >
> > I'm using Observable for tests, but we can change this class by some
> > other
> > interface if needed after the concept is tested. I will look for similar
> > patterns in Turbine/Avalon code.
> >
> > >
> > > Like the XSLPortlet. To optimize its performance it shouldn't
> > have to run
> > > the transform everytime.
> > > Is caching content something that the DiskCache should be providing, or
> > > should we be writing that code in our portlets (like the XSLPortlet)?
> > >
> > > Or for a simple html file. Is the DiskCache supposed to cache
> > the file in
> > > memory, and then figure out when its been modified and keep the
> > memory copy
> > > sychronized?
> >
> > The actual disk cache does not handle caching in memory. For what you
> > want, we
> > should probably have a "glue" object that contains the object, caches
> > itself
> > in memory using the memory cache, and takes care of the interaction with
> > the
> > disk cache.
> >
> > The portlet used a memory cache, so your portlet should be cached in
> > memory,
> > until it expires. Once it expires,  it will be reinstantiated. Look at
> > the
> > code in PortletFactory.
> >
> > You should think of the disk cache as URLManager, or ResourceManager. It
> > is on
> > charge of synchronising fetching and caching of external resources, more
> > or
> > less like what a HTTP proxy would do.
> >
> > I think that the portlet expiration mechanism has some flaws,  and
> > possibly
> > also the Disk Cache.
> >
> > I don't look at it very much, since the code is very messy and I'm
> > working in
> > a replacement. It has to be ready "real soon now". :-)
> >
> > >
> > > "
> > >
> > > Thanks,
> > >
> > > David
> >
> >
> > --
> > --------------------------------------------------------------
> > To subscribe:        [EMAIL PROTECTED]
> > To unsubscribe:      [EMAIL PROTECTED]
> > Search: <http://www.mail-archive.com/[email protected]/>
> > List Help?:          [EMAIL PROTECTED]
> >
> >
>
> --
> --------------------------------------------------------------
> To subscribe:        [EMAIL PROTECTED]
> To unsubscribe:      [EMAIL PROTECTED]
> Search: <http://www.mail-archive.com/[email protected]/>
> List Help?:          [EMAIL PROTECTED]



--
--------------------------------------------------------------
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Search: <http://www.mail-archive.com/[email protected]/>
List Help?:          [EMAIL PROTECTED]

Reply via email to