Minimal version of "Offline Mode" available behind a flag on dev channel

2,018 views
Skip to first unread message

Randy Smith

unread,
May 1, 2013, 12:41:34 PM5/1/13
to Chromium-dev

Folks: I've landed an initial version of an "offline mode" behind a flag.  At this point it should be available in all dev channels.  If you're interested in trying it out, go to "about:flags" and enable "Enable Offline Cache Mode".  And let me know what you find!

Details:
* There is no UI; if you're offline and you navigate to a web site that has stale data in cache, you'll get the stale data without any warning.
* "Offline" means "First network access on that website returns an error that could be due to a network connectivity failure" (includes DNS name-not-found errors).  I.e. this should work behind captive portals and similar.
* There is no effort made to populate the cache; it's cache-as-cache-can :-}.
* It doesn't necessarily play well with Appcache; the simple cases may work, but there are some complex interactions I haven't investigated yet. 

I'm most interested in websites for which this produces a *bad* user experience (i.e. ones for which you wish you had gotten the error page instead of the cache data).  I expect for most websites some data will be better than no data, but I'd like to know about the corner cases for which that isn't true.

Thanks!

-- Randy

Dirk Pranke

unread,
May 1, 2013, 12:53:43 PM5/1/13
to Randy Smith, Chromium-dev
Are there suggested ways to trigger offline mode, to test this? Obviously I can turn off my network adapters on my computer, but maybe there are others?

-- Dirk


--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
 
 
 

Randy Smith

unread,
May 1, 2013, 2:06:52 PM5/1/13
to Dirk Pranke, Chromium-dev
On Wed, May 1, 2013 at 12:53 PM, Dirk Pranke <dpr...@chromium.org> wrote:
Are there suggested ways to trigger offline mode, to test this? Obviously I can turn off my network adapters on my computer, but maybe there are others?

That's the one I've been using :-J.  

-- Randy

Matt Smith

unread,
May 15, 2013, 8:24:50 PM5/15/13
to chromi...@chromium.org
Randy,

I just tested this out with our web app (which uses a mix of files from Appcache and server-based requests), and it did not go well.

Images and styles didn't always load, some pages showed stale data, and the ping requests that our app uses to test server connectivity returned false positives. Plus, it seems like this offline caching is completely ignoring the headers that our app uses to prevent any caching. 

This kind of aggressive caching behavior reminds me of Apple's recent oops. Old data is not always better than no data, especially for web apps, because a user will think they are online and seeing current data. Many of our customers are mobile, and often lose connectivity. It would be a real nightmare to debug issues if users might be looking at stale content.

IMHO, caching (offline or otherwise) should be dictated by the website/webapp, and this is already possible with existing caching headers and the appcache. Despite some negative press, appcache is terrific, especially for web apps that need to run offline, and we've been using it to power our web app in offline-mode (across a huge variety of devices), while totally avoiding the costs and restrictions of distribution through walled-garden app-stores.

I'd recommend against this type of offline behavior, but if you still want it, perhaps you could:
  • keep it disabled by default (user has to opt-in) -- like it is now
  • display a big warning to tell users that they are offline (and looking at old data)
  • respect the caching headers on pages 
  • disable it for pages that already use the appcache
I'll get off my soapbox now. Thanks for enduring my rant. ;)

- Matt


Randy Smith

unread,
May 17, 2013, 5:33:02 PM5/17/13
to matthewg...@gmail.com, Chromium-dev
Hmmm.  A couple of thoughts:

* I completely agree that if a web site / web app has specified the offline behavior they want to have happen, we should respect that.  You may remember that in my initial note I indicated that this might not play well with AppCache :-}.  I have no problem believing that there are improvements that can (and should before any release) be made in the interaction between web apps and any feature based on this experiment.

* My target for this experiment is the non-webapp properties, and the question I'm trying to answer is "How much better could we make the offline user experience for pages that *haven't* put thought into how they should behave offline?".  

* I'd imagine for any feature based on this experiment, we'd have to badge the pages so that the user knew they were getting stale data.  Since this was just an experiment to get information, I settled for warning people up front that there wasn't any UI and relying on people turning the flag on being ok with the lack of such a badge.

So I'll take the main point of your feedback as "make darn sure you don't make the world any worse for appcache enabled properties" and agree that yes, that's a requirement of any actual implementation.  But it doesn't particularly concern me that this experiment didn't play well with web apps.  

-- Randy
Reply all
Reply to author
Forward
0 new messages