Add offline support using cache manifest