Add key-based fragment caching to views

The datalist and categories that are read from arrays each time a view is accessed should be cached. With key-based fragment caching, those items will be pulled from cache, and if the array changes, the cache will auto-expire and cache the new version until the next time it is changed.