implementing page and fragment caching