Added basic caching (environment-dependent); Fixed redirect helper; Added GZIP compression; Updated exam module routing to use separate 'service()' method