W3C home > Mailing lists > Public > public-webapps@w3.org > January to March 2013

fixing appcache...

From: Charles McCathie Nevile <chaals@yandex-team.ru>
Date: Sun, 24 Mar 2013 01:33:29 +0100
To: "public-webapps WG" <public-webapps@w3.org>
Message-ID: <op.wufc53xgy3oazb@chaals.local>
Hi,

we've been talking about appcache inside Yandex. Actually we're not at all  
sure that appcache is what we really want, so much as an API to use the  
normal cache better. Right now we prefer to use local storage, since  
appcache isn't actually helpful. Anyway, here are some use cases:

1. Initial loading.
Our SERP (and Yandex main page www.yandex.ru) uses embedded styles and  
scripts for faster loading than with multiple requests for  
styles/scripts/...

But users load them every time they visit the results page, because the  
browser doesn't cache it. It would be nice on the first visit to extract  
the styles and scripts and store them in the cache.

2. Bundles.
Sometimes we need to load several resources (js/css/json/...) before we  
can actually show something to user. Like a dialog, or another complex  
control. Or if it's a single page application before change "page". Again,  
it's often faster to make one request than several, but it would be even  
faster if we could then cache them separately:
HttpCache.store(url1, content1);
HttpCache.store(url2, content2);
...
So that later we can use the files as usual (<script>, <link>...).

3. Diffs (delta updates)
Every static file (js/css/...) has a version, e.g.  
http://yandex.st/mail/1.3.8/mail.js
Whan we release a new version our users have to download it. It could be  
hundreds of kilobytes (or more). But the difference between versions is  
often not very big. So we want to make delta updates.

It would be nice if we could download the diff, apply it in the browser  
and store the update in cache e.g.:

var oldVersion = '1.3.8';
var newVersion = '1.3.9';
var oldContent = HttpCache.get(oldUrl);
var newContent = applyPatch(oldContent, patch);
HttpCache.store(newUrl, newContent);


4. Preloading.
Well, we can use normal xhr for that but maybe we can do more with  
HttpCache.

Basically we want methods for loading resources, storing them in cache,  
fetching them from cache, checking if something is in the cache, ...

cheers

Chaals

-- 
Charles McCathie Nevile - Consultant (web standards) CTO Office, Yandex
       chaals@yandex-team.ru         Find more at http://yandex.com
Received on Sunday, 24 March 2013 00:34:02 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:58 GMT