连不上网?大不列颠及北爱尔兰联合王国卫报的性格离线页面是那样做的

2015/11/20 · HTML5 · Service
Worker,
离线页面

本文由 伯乐在线 –
Erucy
翻译,weavewillg
校稿。未经许可,禁止转发!
英文出处:Oliver
Ash。欢迎参加翻译组。

小编们是怎么样行使 service worker 来为 theguardian.com
营造二个自定义的离线页面。

图片 1

theguardian.com 的离线页面。插图:奥利弗 Ash

您正在朝着公司途中的地铁里,在手提式无线电话机上开辟了
Guardian
应用。地铁被隧道包围着,可是这几个利用能够平常运转,就算未有互连网连接,你也能收获完全的机能,除了浮现的剧情大概有点旧。假设你尝试在网站上也如此干,可惜它完全无法加载:

图片 2

安卓版 Chrome 的离线页面

Chrome 中的这几个彩蛋,很多少人都不明了》

Chrome
在离线页面上有个藏匿的娱乐(桌面版上按空格键,手提式有线电电话机版上点击那只恐龙),这多少能减轻一点你的烦心。然则大家能够做得越来越好。

Service
workers
允许网址作者拦截本身站点的全数互联网请求,这也就意味着大家得以提供周到的离线体验,就好像原生应用相同。在
Guardian
网站,大家多年来上线了1个自定义的离线体验效果。当用户离线的时候,他们会看出2个带有
Guardian
标识的页面,下面带有一个简便的离线提醒,还有八个填字游戏,他们得以在等候互联网连接的时候玩玩那么些找点乐子。那篇博客解释了我们是何许营造它的,可是在始发此前,你能够先本身尝试看。

callback:

安迪·沃霍尔自拍照,1981年。

沃霍尔是20世纪60年代波普艺术的代表人物,将丝网印刷技术玩的得心应手的同时,沃霍尔本人十分喜欢用宝丽来拍照,部分照片为他的创作提供了参照,绝大多数照片也被秘密地归类存档。荣登NO.1的是他的一幅最有名的自拍照,夸张的假发造型非常引人注目。

Giles Duley 《故事的开始》,2011年。

被阿富汗地雷夺取两条腿和左臂9个月后,Duley拍摄了这张大胆的黑白自拍照。“当我仍然在重症监护室时,一个想法一直在我的脑海——拍摄一张自拍照,并且就叫它“破碎的雕像”。

希波利特·巴耶尔《扮成一个溺水者》,1840年。

这张照片是法国摄影师巴耶尔的名作,摄影师本人扮作一名溺水身亡者,裸露着上半身向右靠着。这张照片极有可能是人体摄影史上最早的男性裸体照片(尽管是半裸),使得巴耶尔成为人体摄影的先驱。

维吉《警车里的自拍照》,1940年。

1938年前后,维吉开始采用红外线闪光和红外线感光片在禁止摄影的场合不引人注目地拍摄。维吉与曼哈顿警局有着良好的合作关系,他在警局设有办事处,并在自己的汽车中安装了一个警用无线电装置,这给他提供了极大的便利。期间,维吉拍摄并发表5000多幅报道图片,使他成为纽约最著名的新闻摄影记者。1945年,维吉利用这些照片出版了画册《赤裸的城市》。

John Coplans《床上,双臂放在上面》,1984年。

伦敦出生的John Coplans以画家身份在美国受到好评。经过漫长的沉寂后,他在68岁时拿起相机,以自拍的手法记录自己衰老臃肿的身体局部。这张自拍照拍摄于1979年,是他这一系列中的一张,作品同时表现了衰老与阳刚之气,而把整个后背当做自拍照的主题,也大大颠覆了传统自拍照的概念。

Trish Morrissey 《海莉科尔斯》,2006年。

Morrissey的系列作品《Front》(2005-2007),是摄影师在英国的各个海滩、墨尔本以及周边地区,寻找一个个真实的家庭,之后本人穿上家庭中女性成员的衣服,取代家庭中的女性角色拍摄而成的。她的作品超越了传统自拍照的边界,探讨一种固定的家庭观念。

南·戈尔丁《我和十字架一起在床上》,1988年。

这张个性的自拍照记录了戈尔丁在戒毒诊所,接受药物和酒精成瘾治疗的过程。照片中她的脸是模糊的,但握住枕头的手,和这家机构的Logo是清晰的。床边的小十字架诉说着她的坚定信念。戈尔丁可谓是当今私摄影的鼻祖。她与各种自我放逐于美国主流社会以外的青年人共同生活。在这期间,戈尔丁怀着“自己记录自己的历史”的愿望,开始以摄影方式如实拍摄他们的群体生活,不作任何修饰,赤裸裸地展示了处于社会主流边缘的一部分美国青年的生活实态。

李·弗里德兰德《纽约市》,1966年。

弗里德兰德从50年代起,便开始记录美国居民的日常生活,线条和反差冷硬的图片风格为美国黑白摄影立下典范。他的作品乍看起来像是信手拈来的,实际上却是经过深思熟虑的、具有巧妙的多层面的景观。他常利用门廊、窗户和路灯杆划分画面的结构,还在作品中通过渲染气氛,使熟悉的人物和景物变得不可思议。

弗朗西斯卡·伍德曼《罗德岛》,1976年。

1958年出生的美国艺术家弗朗西斯卡·伍德曼,以拍摄自己或女模特的黑白照片闻名。她大多数作品中的人物是裸体的,并倾向通过相机的运动或长时间曝光的手法使人物的面孔与环境融为一体,她于1981年自杀身亡,年仅22岁。1981年期间,她拍摄了许多有趣的自拍照,照片与她通常的表现形式不同,以正面清晰的图像示人,看起来非常憔悴,她的影子则留在了地板上。

Gillian Wearing 《像我父亲Brian Wearing》,2003年。

在英国艺术家Gillian Wearing的一系列自拍照中,她把自己装扮成真实家庭成员:母亲、父亲、叔叔或自己的年轻版。这张有趣的自拍照是她装扮成自己父亲的形象。照片中父亲是一位年轻帅气的男子,穿着正统的西装。通过以家庭相册为基础,上演自拍照的形式,摄影师成功的掩盖了自己的身份又呈现了其中遗传基因的相似性,让照片变得神秘而不安。

财力CEO老鼠仓,说好保本变巨亏,买基金被坑请到【资金财产暴光台英国卫报专家团,连不上网。】!信用卡无故遭盗刷,银行存款变保障,理财被期骗请猛戳【经济暴露台】!

试试看

您必要3个帮助 Service
Worker 和 fetch
API 的浏览器。结束到本文编写时唯有Chrome(手机版和桌面版)同时支持那三种 API(译者注:Opera
近年来也协助那三头),但是 Firefox
极快就要援助了(在每一日更新的版本中已经支撑了),除去 Safari
之外的全体浏览器也都在摸索。此外,service worker 只可以登记在行使了
HTTPS 的网址上,theguardian.com
已经起来稳步搬迁到 HTTPS,所以我们只幸而网址的 HTTPS
部分提供离线体验。就现阶段以来,大家挑选了 开发者博客 作为我们用来测试的位置。所以一旦你是在大家网址的 开发者博客 部分阅读那篇小说的话,很幸运。

当您利用支持的浏览器访问大家的 开发者博客 中的页面包车型客车时候,1切就准备妥帖了。断开你的网络连接,然后刷新一下页面。假诺您本人没规范尝试的话,能够看一下那段 以身作则摄像(译者注:需梯子)。

 window.addEventListener('offline',  function(){});

  原标题:大不列颠及英格兰联合王国卫报专家团:秋天宣称将怎么着转移英帝国

工作原理

由此壹段简单的
JavaScript,大家得以提醒浏览器在用户访问页面包车型大巴时候登时登记我们同舟共济的
service worker。近日支撑 service worker
的浏览器很少,所以为了防止不当,大家要求运用本性质量评定。

JavaScript

if (navigator.serviceWorker) {
navigator.serviceWorker.register(‘/service-worker.js’); }

1
2
3
if (navigator.serviceWorker) {
    navigator.serviceWorker.register(‘/service-worker.js’);
}

Service worker
安装事件的1局地,大家能够应用 新的缓存
API 来缓存大家网址中的各类内容,比如
HTML、CSS 和
JavaScript:

JavaScript

var staticCacheName = ‘static’; var version = 1; function updateCache()
{ return caches.open(staticCacheName + version) .then(function (cache) {
return cache.addAll([ ‘/offline-page.html’, ‘/assets/css/main.css’,
‘/assets/js/main.js’ ]); }); }; self.addEventListener(‘install’,
function (event) { event.waitUntil(updateCache()); });

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var staticCacheName = ‘static’;
var version = 1;
 
function updateCache() {
    return caches.open(staticCacheName + version)
        .then(function (cache) {
            return cache.addAll([
                ‘/offline-page.html’,
                ‘/assets/css/main.css’,
                ‘/assets/js/main.js’
            ]);
        });
};
 
self.addEventListener(‘install’, function (event) {
    event.waitUntil(updateCache());
});

当安装到位后,service worker
可以监听和操纵 fetch
事件,让我们能够完全控制之后网址中生出的持有互连网请求。

JavaScript

self.addEventListener(‘fetch’, function (event) {
event.respondWith(fetch(event.request)); });

1
2
3
self.addEventListener(‘fetch’, function (event) {
    event.respondWith(fetch(event.request));
});

在此间大家有很灵巧的半空中能够说明,比如下边这么些节骨眼,能够透过代码来生成大家自个儿的伏乞响应:

JavaScript

self.addEventListener(‘fetch’, function (event) { var response = new
Response(‘<h1>Hello, World!</h1>’, { headers: {
‘Content-Type’: ‘text/html’ } }); event.respondWith(response); });

1
2
3
4
5
self.addEventListener(‘fetch’, function (event) {
    var response = new Response(‘&lt;h1&gt;Hello, World!&lt;/h1&gt;’,
        { headers: { ‘Content-Type’: ‘text/html’ } });
    event.respondWith(response);
});

再有这几个,假若在缓存中找到了请求相应的缓存,大家得以一贯从缓存中回到它,要是没找到的话,再通过互连网获得响应内容:

JavaScript

self.addEventListener(‘fetch’, function (event) { event.respondWith(
caches.match(event.request) .then(function (response) { return response
|| fetch(event.request); }) ); });

1
2
3
4
5
6
7
8
self.addEventListener(‘fetch’, function (event) {
    event.respondWith(
        caches.match(event.request)
            .then(function (response) {
                return response || fetch(event.request);
            })
    );
});

那正是说我们怎样行使这一个职能来提供离线体验吧?

第一,在 service worker
安装过程中,我们供给把离线页面必要的 HTML 和能源文件通过 service worker
缓存下来。在缓存中,大家加载了团结付出的 填字游戏 的
React应用 页面。之后,大家会堵住全部访问
theguardian.com
互连网请求,包罗网页、以及页面中的资源文件。处理这一个请求的逻辑大概如下:

  1. 当大家检验到传播请求是指向我们的 HTML
    页面时,大家总是会想要提供新型的内容,所以我们会尝试把那些请求通过网络发送给服务器。

    1. 当大家从服务器获得了响应,就足以平昔回到那一个响应。
    2. 一经互联网请求抛出了老大(比如因为用户掉线了),大家捕获那个万分,然后选用缓存的离线
      HTML 页面作为响应内容。
  2. 要不然,当大家检查测试到请求的不是 HTML
    的话,大家会从缓存中查找响应的伏乞内容。

    1. 假诺找到了缓存内容,我们得以向来回到缓存的内容。
    2. 不然,我们会尝试把那一个请求通过网络发送给服务器。

在代码中,大家选拔了 新的缓存
API(它是 Service Worker API 的壹有个别)以及
fetch
功效(用于转移网络请求),如下所示:

JavaScript

var doesRequestAcceptHtml = function (request) { return
request.headers.get(‘Accept’) .split(‘,’) .some(function (type) { return
type === ‘text/html’; }); }; self.addEventListener(‘fetch’, function
(event) { var request = event.request; if
(doesRequestAcceptHtml(request)) { // HTML pages fallback to offline
page event.respondWith( fetch(request) .catch(function () { return
caches.match(‘/offline-page.html’); }) ); } else { // Default fetch
behaviour // Cache first for all other requests event.respondWith(
caches.match(request) .then(function (response) { return response ||
fetch(request); }) ); } });

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var doesRequestAcceptHtml = function (request) {
    return request.headers.get(‘Accept’)
        .split(‘,’)
        .some(function (type) { return type === ‘text/html’; });
};
 
self.addEventListener(‘fetch’, function (event) {
    var request = event.request;
    if (doesRequestAcceptHtml(request)) {
        // HTML pages fallback to offline page
        event.respondWith(
            fetch(request)
                .catch(function () {
                    return caches.match(‘/offline-page.html’);
                })
        );
    } else {
        // Default fetch behaviour
        // Cache first for all other requests
        event.respondWith(
            caches.match(request)
                .then(function (response) {
                    return response || fetch(request);
                })
        );
    }
});

就只须要这么多!theguardian.com
上的 持有代码都以在 GitHub
上开源 的,所以您能够去那儿查看大家的
service worker
的共同体版本,大概直接从生育环境上访问

大家有充分的理由为这个新的浏览器技术欢呼喝彩,因为它能够用来让你的网址像明日的原生应用相同,拥有完美的离线体验。今后当
theguardian.com 完全迁移到 HTTPS
之后,离线页面的要紧性会显然扩充,咱们得以提供更为完美的离线体验。设想一下你在上下班途中网络很差的时候访问
theguardian.com,你相会到专门为你订制的天性化内容,它们是在您后边访问网址时由浏览器缓存下来的。它在设置进度中也不会时有爆发其余困难,你所必要的只是访问这一个网址而已,不像原生应用,还须要用户有3个选取商店的账号才能设置。Serviceworker
同样能够支持大家提高网址的加载速度,因为网址的框架能够被保障地缓存下来,就好像原生应用相同。

设若您对 service worker
很感兴趣,想要领会越多内容的话,开发者 MattGaunt(Chrome的克尽厥职帮衬者)写了一篇特别详实地 介绍 Service
Worker的文章。

打赏援助作者翻译越来越多好小说,多谢!

打赏译者

get value:

  FX168财经报社(香岛)讯
礼拜伍(5月二十三日)大不列颠及英格兰联合王国财政大臣在集会举办了二零一玖年的三秋注脚,除了公布预算义务办公室(OBTiggo)对经济前景和集体借贷的预期外,还揭穿实行数项财政新政,目的在于稳步下滑财政赤字的还要,适度减税增支以援助经济。对此,专家纷纭予以评论。在那之中山大学英帝国卫报的专家团评论如下:

打赏匡助笔者翻译越多好文章,谢谢!

图片 3

1 赞 收藏
评论

window.navigator.onLine

  马特hew d’Ancona——对退欧凄惨后果的严肃预测

关于作者:Erucy

图片 4

现已的SharePoint喵星程序猿(一时还挂着微软MVP的名头),今后的Azure/.Net/MongoDB/Cordova/前端程序猿,偶尔写随笔
个人主页 ·
作者的小说 ·
46 ·
  

图片 5

  哈蒙德的秋季证明面临着两大障碍:其前任留下的伟大窟窿以及United Kingdom即将退欧的谜底。上任财政大臣奥斯本在任期内执行压缩政策以完毕在二零二零年此前达成财政收入和支出平衡的靶子,而未来的当局不得不将这一指标的兑现延期至20二伍年。

  同时哈Mond所代表的OB翼虎对退欧的影响并不开始展览:经济提升裁减二.四%,借贷扩充1220亿英镑,国家债务占GDP比例将在2017-1八年份攀升至90.贰%。英帝国财政部所面临的下压力总之。

  今天所发表的政策基本上都是对准所谓“JAM”一族(薪金低、负担重的工薪家庭):进步最低薪给、下跌燃油税、升高个税起征额、承诺更加多的廉价住房、软禁能源价格等。但哈蒙德的越来越高志向在于提升产能,他信任那才是能够在今后数10年内制作经济发达、推行公平正义的显要。

网站地图xml地图