Class OfflineCache


  • public class OfflineCache
    extends Object
    The offline cache to initialize / load the client side cache.

    Example:
     
     List offlineCacheEntries = new ArrayList<>();
     offlineCacheEntries.add(new OfflineCacheEntry().setCacheObject(new CssResourceReference(HomePage.class, "main.css")));
     offlineCacheEntries.add(new OfflineCacheEntry().setCacheObject(HomePage.class));
     OfflineCache.init(this, "MyCache-1", offlineCacheEntries);
     
     
    To contribute the offline cache use the following snippet in the renderHead method of a page:
     
     OfflineCache.renderHead(response);
     
     
    If the cache name is going to be changed all resources are going to be reloaded again. This happens if the browser loads the new service worker content (after a browser refresh). The new service worker is going to be initialized as "waiting". (See chapter "How to Update a Service Worker" of the html5 rocks article) If you then switch the page to google for example and switch back, the new content is going to be shown up and the old service worker is going to be marked as "REDUNDANT". You have to leave the page with ALL tabs! Wicket handles older caches to be invalid and clear them - so when you switch from "MyCache-1" to "MyCache-2" all entries of "MyCache-1" are going to be cleared.

    For more information see:

    - https://www.w3.org/TR/service-workers/#navigator-service-worker-waiting
    - https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
    - http://www.html5rocks.com/en/tutorials/service-worker/introduction/
    - http://caniuse.com/#search=Service%20Worker
    Important: local development can be achieved through HTTP (localhost, 0.0.0.0, 127.0.0.1), with DNS you have to use HTTPS! Service worker only running with HTTPS if not local.


    Author:
    Tobias Soloschenko
    • Constructor Detail

      • OfflineCache

        public OfflineCache()
    • Method Detail

      • init

        public static void init​(WebApplication webApplication,
                                String cacheName,
                                List<OfflineCacheEntry> offlineCacheEntries)
        Initializes the offline cache (used in the init method of a wicket application)
        Parameters:
        webApplication - the web application to mount the offline cache references
        cacheName - the cache name
        offlineCacheEntries - the offline cache entries to be cached
      • renderHead

        public static void renderHead​(IHeaderResponse response)
        Loads the service worker registration and the service worker implementation java script references
        Parameters:
        response - the response to contribute the offline cache references
      • getOfflineCacheEntries

        public static List<OfflineCacheEntry> getOfflineCacheEntries​(WebApplication application)
        Gets the offline cache entries
        Returns:
        the offline cache entries
      • setOfflineCacheEntries

        public static void setOfflineCacheEntries​(WebApplication application,
                                                  List<OfflineCacheEntry> offlineCacheEntries)
        Sets the offline cache entries (can only be used if the offline cache hasn't been initialized yet)
        Parameters:
        application - the application instance
        offlineCacheEntries - the offline cache entries to store