The following sections describe improvements that will be made to the News Cache to increase its performance. Hence no extra functionality will be visible to the users of the News Cache.
To reduce the requirements on the filesystem, the format of the article database will change in a future version. Currently we consider to extend the Non Volatile Classes Library to provide the efficient management of articles. However, currently this part of the database has not been designed.
The caching granularity of the news cache may either be based on articles or on newsgroups. Article based caching reduces the required disk space and network bandwidth, because only articles being requested by a client will be cached. On the other hand newsgroup based caching reduces the number of network connections made to the news server and the load caused to the news server. Additionally newsgroup based caching reduces the total transmission time, because the articles are requested in fewer, but bigger junks. This improves the response time for successive requests to such newsgroups.
For small newsgroups the granularity of newsgroups seems to be better, because they require very little disk space and all data are requested in one junk. However, for large newsgroups, especially newsgroups with large articles, like newsgroups storing pictures or programs, an article based caching mechanism is better.
In one of the next releases we want to add this as an option to the user configuration. By default the newsgroups will be cached on an article based strategy. Newsgroups specified by the user will be cached based on a whole newsgroup strategy.
Currently we did not analyze this problem in detail. In the current release we use an external program that removes the least recently used articles first. The advantages and disadvantages of different expiration strategies are:
For a solution to this problem, statistics for all solution strategies (including combinations of these solution strategies) have to be collected. Based on this statistics we will decide for the final expiration behavior.