It would be highly desirable to have the data already loaded through AJAX be cached on the Browser rather than fetching it again every time the component accessed!
For example,in scrollableDataTable caching the data while we scroll down and showing the same when the user scrolls up reduces lot of requests to the server and database. Similarly, In case of tabPanel, loading the data through AJAX only when the tab is created,and then displaying the cached data on every subsequent tab focus reduces many server calls. Similarly the tree nodes can be cached if loaded through AJAX. In general,this feature can be applied to other components in situations where data is loaded through AJAX. Preferably, this caching feature should be made optional by providing an attribute at the component level.
Also a means to refresh the cached data in the browser should be put in the component itself in either or both of the following ways :
1.the end user explicitly requesting "refresh cache" by clicking a link on the corresponding component or
2.based on some input or on meeting certain criteria, the page developer should be able to clear the cache and load records freshly.
It should be noticed that loading the same number of records as were there before clearing the cache (if they are still available) would be better from usability perspective.
Caching the data on the client-side improves performance manifold for those sites where there won't be any changes in the existing data set. But if there would be new records being added or existing records being deleted in the database , then client-side caching may not be any option to choose. Or may be we must ponder over how we can detect if there is a difference between the client-side cache and the data in the database,and then refresh the cache when a change is found!