add app-cache support