From: Stefan S. <ste...@tu...> - 2002-09-10 12:03:40
|
Hello all On 2002-03-31, Tavis started a discussion on a caching framework. Since we'll need a (or several) application-wide (not servlet-wide) cache in our project, I wanted to hear whether anybody has worked on this theme. If not, we would code a Cache class and give it to the community though our requirements are surely "lower" than that what Tavis outlined in his mail. :-) We probably "only" need: - multiple application-wide caches - thread-safe - not necessarily persistent (though that would be fine) - caching by automatically assigned unique id (at least per cache) or key set to a certain value - automatic cache cleaning based on expiration date (or maybe other criteria) The intended primarily purpose of these caches is to store HTML output or objects that have been read from the database and can easily be "turned into HTML". We won't be able to invest more than the necessary work to satisfy our project's needs but if someone has ideas or suggestions, or want to participate, please tell me. :) Stefan |
From: Stefan S. <ste...@tu...> - 2002-09-13 09:01:23
|
On Tue, 10 Sep 2002, Stefan Schwarzer wrote: > On 2002-03-31, Tavis started a discussion on a caching framework. > Since we'll need a (or several) application-wide (not servlet-wide) > cache in our project, I wanted to hear whether anybody has worked on > this theme. > > If not, we would code a Cache class and give it to the community > though our requirements are surely "lower" than that what Tavis > outlined in his mail. :-) > > We probably "only" need: > > - multiple application-wide caches > - thread-safe > - not necessarily persistent (though that would be fine) > - caching by automatically assigned unique id (at least per cache) or > key set to a certain value > - automatic cache cleaning based on expiration date (or maybe other > criteria) I now have a cache module, together with a unit test. For use in a application class I coded a (hopefully thread-safe) "single updater/multiple reader" cache which I'll extend/modify as we proceed in our project. I would like to offer the module under the BSD license. What is the most appropriate way to contribute the code, if I also would like to get some feedback on something in the code? Should I send it inline to the list, send it as attachment, submit it as a patch (which it actually isn't ;-) ), send it some webware developer who will check it in, or get CVS write access myself? :-) (In the latter case: Can I submit the code space-indented, as we use that in our project, and it's not nice to always convert the code. Or is there even an automated conversion as could be done via the CVS `commit` file?) The following of the above-mentioned aims are reached in this module: > - multiple application-wide caches are possible by using multiple instances > - thread-safe yes, but I could need an advice on one place in the code > - not necessarily persistent (though that would be fine) no; actually, the cache updater (so far) _reads_ from the database > - caching by automatically assigned unique id (at least per cache) or > key set to a certain value The value currently is determined by the ids of the rows in the database. > - automatic cache cleaning based on expiration date (or maybe other > criteria) There's an periodically running update thread. Clients which have notified the cache see a consistent view of the cache's overall contents. As long as at least one client hasn't released the cache, e. g. reads from the database can proceed, but only when no client is active, the "view" of the data changes. That shouldn't be a problem as long as there are "infinitely" short times so the (yet blocking) update thread can get control. > The intended primarily purpose of these caches is to store HTML output > or objects that have been read from the database and can easily be > "turned into HTML". At the moment the mentioned cache is used to get data for application objects from the database and build them from the data. Because that takes several seconds it isn't done every time another object uses this data. > We won't be able to invest more than the necessary work to satisfy our > project's needs but if someone has ideas or suggestions, or want to > participate, please tell me. :) I'm relatively sure that we will need the global page cache also but can't promise anything when. Stefan |
From: Matthew J. F. <ma...@da...> - 2002-09-24 14:43:32
|
Stefan Schwarzer wrote: >On Tue, 10 Sep 2002, Stefan Schwarzer wrote: > > >I now have a cache module, together with a unit test. For use in a >application class I coded a (hopefully thread-safe) "single >updater/multiple reader" cache which I'll extend/modify as we proceed >in our project. > > Did you find a way to share your code? I'd love to see it. |
From: Stefan S. <ste...@tu...> - 2002-10-01 13:01:13
|
On Tue, 24 Sep 2002, Matthew J. Feifarek wrote: > >On Tue, 10 Sep 2002, Stefan Schwarzer wrote: > > > >I now have a cache module, together with a unit test. For use in a > >application class I coded a (hopefully thread-safe) "single > >updater/multiple reader" cache which I'll extend/modify as we proceed > >in our project. > > > Did you find a way to share your code? I'd love to see it. Unfortunately, nobody answered my question regarding the best way to contribute the code. (If there was a problem with my original mail, I would like to know that problem. Was it that I mentioned the indentation by tabs? ;-) ) Stefan |