Sylvain Wallez wrote:

> 
> Berin Loritsch a écrit :
> 
>>Sylvain Wallez wrote:
>>
>>
> <snip/>
> 
>>>But here's another use case : suppose you have a portal site where 10%
>>>of the pages make 90% of the requests, but where 100% of the pages are
>>>monitored, because they have been visited at least once since server
>>>startup. I'm not good at statistics, but lets suppose this results in
>>>only 15% of all pages to be requested in a monitor scan period.
>>>
>>>This means that at each refresh period, ActiveMonitor will scan 100% of
>>>the pages when only 15% are really needed to be scanned : 85% of useless
>>>File.getLastModified() !! This is what I wanted to point out.
>>>
>>My concept of how to use Monitor was to monitor things that require
>>action.  This means that XSP and Sitemap files should be monitored--their
>>change requires action by the system.  Cached resources must be monitored,
>>as they affect the validity of the cache.  The action I foresee for this
>>event is to invalidate the cache entry and release the Resource.
>>
>>This way only the pages that are required to be monitored are monitored.
>>
>>As to the 85% useless File.getLastModified(), you have to consider the
>>cost of the action.  If you have that many resources that you have not
>>removed your Resource entry, then there is something wrong in the way
>>you are using it.  Also, if this is happening in a background thread
>>at low priority (read asynchronously that will not override actual
>>serving of requests), then the cost of these extraneous calls are lowered!
>>
> 
> OK I think to have understood now (light bulb over my head;) : do you
> mean that once a Resource has been detected as modified, we should
> remove it from the monitor and release the associated data, i.e. remove
> the cache entry or unload the XSP-generated class ? This makes sense,
> now.


Yes.  But please note that for the ProgramGenerator you may want to keep
the Resource in the monitor--unless the Resource was deleted.  That way,
once the XSP/Sitemap has been found to have been changed,  The
ProgramGenerator regenerates the resource in question--thus still needing
to know if it changed again.


> One more question : don't you think a kind of Resource time-to-live can
> be useful, i.e. automatically invalidate resources that haven't been
> used for a long time ? This would allow to purge infrequently used
> resources from the system. Or maybe this should be handled by the MRU
> policy of the cache.


I would rather have that handled by the Cache system.  I want to avoid
undue complexity in the Monitor system (in fact I am thinking of some
simplifications).

<snip/>


>>ActiveMonitor is a tool for developing apps, you might not want it all
>>the time.  Also, ActiveMonitor is best used in systems where action
>>must be taken on the resource.  I would rather the ProgramGenerator
>>and Cache system uses it, and all other Generators and Transformers,
>>etc. never make _any_ calls to getLastModified().  That way, if the
>>cache entry expires, the Resource reference is released, and no other
>>Generator/Transformer/etc. needs to be notified.
>>
> 
> Cool. My fears and wonders are vanishing :)


Great!

-- 

"They that give up essential liberty to obtain a little temporary safety
  deserve neither liberty nor safety."
                 - Benjamin Franklin


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to