implementing page caching