精华内容
下载资源
问答
  • 原文 Service Worker, what are you ? 我:“Service Worker,你是什么?”Service Worker:“我是一个可编程网络代理。”我:“吓?” Service Worker听起来很酷炫,但是我并不了解他 2015年七月,我在德州奥斯丁...
        
    原文 Service Worker, what are you ?

    我:“Service Worker,你是什么?”
    Service Worker:“我是一个可编程网络代理。”
    我:“吓?”

    Service Worker听起来很酷炫,但是我并不了解他

    2015年七月,我在德州奥斯丁出席了一个JavaScript大会。台上的是Jake Archibald,我当时只知道他是一个讲了一些 bathroom matter 的有趣英国人(18.07.20 更新!!感谢这个视频让我意识到这个 bathroom matter 应该是指口音问题)。但是后来我才知道,他可是定制Service Worker规范的大人物。演讲地址
    台上他围绕着他对用户体验的感悟,介绍了一个叫做Service Worker的新东西,它可以让你的网站用起来和原生手机医用一样(这是我的理解)。
    这听起来很赞,我很希望可以把这个技术用在我的项目上,虽然刚接触它理解起来不容易...这不是一个库,不是一个新的HTML元素,又不是Javascript语法。阅读关于介绍Service Worker的文章总是被一些名词迷惑——例如“代理”和“缓存”。通过边理解边画图的方法,我终于对此有所理解,Service Worker是一个外星人,你可以邀请他住在你的浏览器里。听起来很奇怪?请听我解释。

    在网络浏览器宇宙里,Service Worker是一个外星人

    clipboard.png

    试想一下你的浏览器是计算机星系里的一个星球(像是地球)。这个星球里,人们用HTML, CSS, 和JavaScript等语言构成“网页社会”。如果你是网站开发者,从不同类型的元素到垃圾回收机制你都懂了,那你可能是这个星球的社会学家了。

    clipboard.png

    这个星球发明了一种链接外部世界的方法,那就是超文本传输协议。这是从其他星系(服务器)请求资源的方法。有了这个方法我们的星球(浏览器)才能收集各种猫gif和发推。也是这个方法让这个星球变得有趣,并保持数百万住户。

    clipboard.png

    把超文本传输协议(HTTP)说得很神奇,但实际上你要用HTTP连接其他星系需要为此铺设名为因特网的管道。尺寸和长度要看你给了网络供应商多少钱,以及你所在地区的基础设施。如果这条管道又窄又长,那获取资源的速度就相对慢些了。

    clipboard.png

    问题来了,供应商不一定能保持我们星球的网络畅通,当浏览器不能连接这个管道,我们的星球就要回到过去了,回到那个恐龙横行的时代。

    别慌!Service Worker 帮到你!

    Service Worker存在于管道和星球之间。你发送的请求交给了Service Worker,请求他帮忙,而不是直接传到其他星系。这(对我来说)感觉就像是UFO里面的外星人。

    clipboard.png

    关于我们的新朋友Service Worker,你应该了解以下3件事

    1. Service Worker 是你召唤的。除非你请求他,否则他不会出现。一旦你请求Service Worker的帮助,直到他觉得任务已经完成之前,他会一直存在。所以Service Worker没有.terminate()。
    2. Service Worker 是存在于网页之外的。当你关闭一个浏览器窗口,通常一切进入不活动的状态。你不能下载视频或者浏览网页,但是!即使浏览器关闭了,Service Worker也可以在被需要时唤醒,然后在不被需要时消失,简直是奇迹!你(作为一个开发者)不用掌控Service Woker的生命周期。(这是我觉得他像外星人的原因)
    3. 之前提及到的,Service Worker 存在于页面之外,这意味着他不能接触到网页元素。你不能在Service Worker 访问window变量和document变量,也不能修改里面的DOM元素。

    所以Service Worker 可以帮我们做什么?

    1. 与缓存互动
    你可以请求Service Worker作为中间人检查事件收发,请求Service Worker在缓存里保存完整的资源。当缓存的项目被请求,Service Worker可以在缓存中请求这些数据而不用通过HTTP。这些资源被缓存了,浏览器就可以在网络不通的情况下展示内容。

    clipboard.png

    2. 推送提醒
    得益于“Service Worker可以在浏览器窗口关闭时保持活动状态”这一奇迹,你可以实现类似推送提醒的功能。

    clipboard.png

    3. 运行后台同步
    可以在浏览器窗口关闭时保持活动状态也意味着Service Worker可以在后台运作(如用户切换到其他标签时)。假如当浏览器离线时,你要发送一些文件,Service Worker 可以帮你在网络接通时上传。

    clipboard.png

    如果你对Service Worker 是什么感到迷惑的话,希望这篇文章可以帮到你,想要开始写代码了?我推荐你看看Jake Archibald的offline-cookbook


    某译者的胡说八道
    到底bathroom matter是什么鬼啦((

    展开全文
  • Nginx核心要领五:worker_processes、worker_connections设置

    万次阅读 多人点赞 2019-05-31 13:15:53
    worker_processes与worker_connections 设置好合适大小,可以提示nginx处理性能,非常重要。 原作者的话: As a general rule you need the only worker with large number of worker_connections, say 10,000 or ...

    worker_processes与worker_connections 设置好合适大小,可以提示nginx处理性能,非常重要。

    原作者的话:
    As a general rule you need the only worker with large number of worker_connections, say 10,000 or 20,000.
    However, if nginx does CPU-intensive work as SSL or gzipping and you have 2 or more CPU, then you may 
    set worker_processes to be equal to CPU number.
    Besides, if you serve many static files and the total size of the files is bigger than memory, then you may 
    increase worker_processes to utilize a full disk bandwidth.
    Igor Sysoev
    
    翻译:
    一般一个进程足够了,你可以把连接数设得很大。(worker_processes: 1,worker_connections: 10,000)
    如果有SSL、gzip这些比较消耗CPU的工作,而且是多核CPU的话,可以设为和CPU的数量一样。(worker_processes: CPU核心数)
    或者要处理很多很多的小文件,而且文件总大小比内存大很多的时候,也可以把进程数增加,以充分利用IO带宽(主要似乎是IO操作有block)
    
    worker_processes,工作进程数
    • 1.默认:worker_processes: 1
    • 2.调大:worker_processes: CPU核心数,(双核4线程,可以设置为4)
    worker_connections,单个工作进程可以允许同时建立外部连接的数量

    数字越大,能同时处理的连接越多

    • 1.默认:worker_connections: 1024
    • 2.调大:worker_connections: 100000,(调大到10万连接)
    worker_connections解析
    • 1.connections不是随便设置的,而是与两个指标有重要关联,一是内存,二是操作系统级别的“进程最大可打开文件数”。
    • 2.内存:每个连接数分别对应一个read_event、一个write_event事件,一个连接数大概占用232字节,2个事件总占用96字节,那么一个连接总共占用328字节,通过数学公式可以算出100000个连接数大概会占用 31M = 100000 * 328 / 1024 / 1024,当然这只是nginx启动时,connections连接数所占用的nginx。
    • 3.进程最大可打开文件数:进程最大可打开文件数受限于操作系统,可通过 ulimit -n 命令查询,以前是1024,现在是65535,
      nginx提供了worker_rlimit_nofile指令,这是除了ulimit的一种设置可用的描述符的方式。 该指令与使用ulimit对用户的设置是同样的效果。此指令的值将覆盖ulimit的值,如:worker_rlimit_nofile 20960;
      设置ulimits:ulimit -SHn 65535
    worker_processes 2; 
    worker_rlimit_nofile 65535;
    #pid logs/nginx.pid; 
    events { 
       worker_connections 65535; 
    }
    

    通过 ps -elf | grep nginx 找到 nginx 的worker进程ID
    通过 cat /proc/31613/limits 查看,其中2291是worker进程ID,请注意其中的Max open files

    在这里插入图片描述
    从上面的分析可以看出nginx占用内存小,处理性能高,通过提高服务器的配置,Nginx可以应对更大的连接数

    展开全文
  • 初探ServiceWorker

    千次阅读 2016-03-04 23:16:55
    最近接触了ServiceWorker的一些东西,整理了一些基本的东西。因为本人不是做JS开发所以对JS理解没有那么深,所以这篇文章是看了一些国外的博客,MDN后加了一些自己的理解,有些地方翻译的不是太准。  参考资料: ...

          最近接触了ServiceWorker的一些东西,整理了一些基本的东西。因为本人不是做JS开发所以对JS理解没有那么深,所以这篇文章是看了一些国外的博客,MDN后加了一些自己的理解,有些地方翻译的不是太准。

         参考资料:

             MDN:https://dbwriteups.wordpress.com/2015/11/16/service-workers-part-4-background-sync/

             ServiceWorkerDemo:https://github.com/riteshkumar078/serviceworker-offline-demo

             自己整理的ServiceWorker中文API:http://download.csdn.net/detail/qtstsq55/9453135

             国内翻译组:http://www.chinaw3c.org/archives/596/

          一个ServiceWorker是运行在浏览器后台的基本js脚本,它们不需要一个页面来支撑。它们异步地运行在一个完全独立的上下文环境,不会对主线程造成阻塞。ServiceWorker提供了一个Request/Response的代理机制,通过运行在后台的任务来丰富浏览器的离线体验。

          首先,我们可以通过ServiceWorker获得富离线操作。在ServiceWorker之前出现过AppCache技术,但是普遍反映是糟糕透了。它提供了一个可编程的网络代理,给予开发者完全控制离线数据的能力有一些重要的事项需要我们注意:

                1.ServiceWorker运行在它们自己的完全独立异步的全局上下文中,也就是说它们有自己的容器。

                2.ServiceWorker没有直接操作DOM的权限,但是可以通过postMessage方法来与Web页面通信。

                3.ServiceWorker没有权限进行LocalStorage,但是可以使用IndexDB。

                4.浏览器可能随时回收ServiceWorker。

                5.ServiceWorker的生命周期是由事件驱动的而不是通过Client。

         下图很好的说明了ServiceWorker的主要生命周期。

              

            第一步注册ServiceWorker。注册ServiceWorker需要一个js文件和指定作用域。我们可以使用chrome://serviceworker-internals来查询浏览器的ServiceWorker的信息。

    //首先根据navigator.serviceWorker来判定浏览器是否支持ServiceWorker
    if (navigator.serviceWorker) {
    //表明sw.js位于根目录下,同时./表明同一目录下的所有同源请求都可以被sw.js接管。
    console.log("ServiceWorkerssupported");sw.js', {scope: './'}.then(function(reg) {
           console.log("ServiceWorkerstered with scope: ", reg.scope);
      }).catch(function(error) {
           console.log("Failedegister ServiceWorker", error);
     });
    }

          注册成功后,就会进入安装(Installation)过程。(这里需要说明的是activating阶段是不会触发事件的,只有激活成功后才会触发onactivate事件)。sw.js也就定义了ServiceWorker的表现。

       sw.js:

      var CACHE_NAME = "my_cache";
       var urlsToCache = [
        '/index.html',
        '/css/style.css',
        '/js/script.js'
       ];
    
    //这里的self代表ServiceWorkerGlobalScope
    self.addEventListener('install', function(event) {
    //这里的waitUtil会在安装成功之前执行一些预装的操作,但是只建议做一些轻量级和非常重要资源的缓存,减少安装失败的概率。安装成功
    //后ServiceWorker状态会从installing变为installed 
    event.waitUntil(
            caches.open(CACHE_NAME).then(function(cache) {
                 console.log('Opendhe : ',cache);
                return cache.addAll(urlsToCache);
          })
        );
    });

          安装成功后,会进入激活的流程 (Activation) 。

    //在这个流程我们可以做一些诸如释放缓存的操作,激活成功后,ServiceWorker状态会从activating变为activated
    self.addEventListener('activate', function(event) {
           event.waitUntil();
    });

           到这里ServiceWorker的主流程就已经走完,但是我们要注意ServiceWorker对第一次载入的页面是不起作用的,只有下次访问或者刷新页面后,ServiceWorker才能起作用。注意ServiceWorker的更新,每次访问ServiceWorker控制的页面,浏览器都会去比对当前js文件和注册路径对应的js文件,只要有一个字节不同,浏览器都会获取并安装新文件。但是,这不是立即生效的,原有的ServiceWorker还是会运行,只有当ServiceWorker控制的页面全部关闭后,新的ServiceWorker才会被激活。(Shift+F5)

          ServiceWorker同样有网络代理的功能,它可以截取浏览器请求,由开发者定义返回数据(因为这个权限过大,所以现在只能截取https的Get和Head请求)。

    //通过fetch事件来定义返回数据,但是注意fetch默认是不支持non-cors的,还有一个issue是fetch也不支持30x的重定向请求。 
    self.addEventListener('fetch', function(event) {
           event.respondWith(
              new Response("This is my response")
        );
    });

         实例Demo  :

           1.首先将Demo工程copy到Tomcat的Webapps目录下,然后启动Tomcat。

           2. 访问http://localhost:8080/serviceworker-offline-demo-master/index.html (ServiceWorker只适用于https请求,但localhost是一个例外)。

            


            第二次刷新后,我们可以查看ServiceWorker的部署情况(chrome://serviceworker-internals)和缓存的文件(crtl+shift+i)。

           

               

               

            3.看下service-worker的代码,激活后的ServiceWorker已经将返回缓存下来。这时候我们关闭Tomcat,再去访问当前页面我们还是会看到和之前一模一样的页面,证明ServiceWorker起了作用。这也正是ServiceWorker提供给我们的核心作用,提供完整的离线数据操作能力,降低应用对网络的依赖,提供富离线体验(对于存储空间的获取Chrome已经提供了其他接口,这里不再赘述)。

        

         

           目前,有7种比较流行的离线操作处理:

               1.fetch only:这种使用fetch和respondWith的方法直接等价于浏览器载入页面,和ServiceWorker一点关系都没有。

               2.cache only:这种方法只匹配Cache中已经存在的request,适用于资源全部缓存后的情况。

               3.cache only with offline.html:这种方法通过在inatsll时预装一定的资源,只缓存预装的资源。

               4.cache then network: 这种方法首先会去匹配缓存中的Request,如果缓存没有命中,则去服务端拿。

               5.network then cache:这种方法首先会去服务端拿,如果获取失败,则会去Cache中匹配。

               6.cache then network and update cache:这种方法首先会去Cache中匹配,同时去fetch,fetch成功后会更新当前Cache。如果Cache匹配到则返回Cache内容,否则返回fetch的内容。

               7.cache then network and update cache  + postmessage:这种方法是6的变种,6的情况有可能造成服务端已经更新但是浏览器还是拿的缓存,所以增加postmessage方法来通知Web页面更新。

               下图是ServiceWorker核心流程:         



    展开全文
  • 文章较长,请见: http://www.cnblogs.com/wdxinren/articles/74657.html 转载于:https://www.cnblogs.com/wdxinren/archive/2004/12/09/74658.html

    文章较长,请见:

    http://www.cnblogs.com/wdxinren/articles/74657.html

    转载于:https://www.cnblogs.com/wdxinren/archive/2004/12/09/74658.html

    展开全文
  • web workerNote: This is a consolidation of the useful links related to Web worker. All the high level concepts are added directly as text. To know more in detail, please refer the added links. I had c...
  • ServiceWorker中文API

    2016-03-04 23:07:30
    自己翻译的ServiceWorker中文API,本人对JS研究不深,有些地方有疏漏,请多多指教。
  • 参考nginx官网:http://nginx.org/en/docs/ngx_core_module.html#worker_connections ... max_clients = worker_processes * worker_connections/2 nginx作为反向代理服务器的时候: max_clients = worker...
  • worker ajp13属性详解

    2012-05-31 15:52:34
    apache tomcat connector的网站老打不开,看不了官方的解释,以下应该是中文的翻译,摘自网上: 下表描述了ajp13worker接受的属性: host: 侦听ajp13请求的Tomcat worker主机。 port: Tomcat worker...
  • Web Worker 跨域访问

    2020-07-12 15:25:47
    Web Worker按照字面意思应该翻译成“工作者线程”,这个API有点类似MFC里的线程函数,MFC的线程函数也分普通线程(完整的线程功能,拥有消息循环功能)与工作者线程(没有消息循环,就是拿来做后台处理数据的线程用的)...
  • PHP异步任务worker

    2018-08-16 09:57:00
    WorkerServer主要负责管理(启动,重启,监控等)worker工作进程。 Worker负责从指定消息队列获取任务消息并执行任务。 为了提高worker任务处理效率,目前按任务处理时间长短,区分不同的任务队列,...
  • Worker Services 咱也不知道怎么翻译成了这个名称,咱也不敢乱翻译,下文就保持原名称。。。,本文将会演示如何创建一个Worker Services项目,并且部署为windows服务或linux守护程序运行; 开始创建worker service ...
  • 无论是看过的nginx有关书还是网上看到的有关nginx 配置说明的文章(http://wiki.nginx.org/EventsModule#worker_connections),无一例外,在讲到 worker_connections 和 max_clients这两个概念的关系时都一致...
  • worker_processes: 官方英文版wiki配置说明中的描述如下,个人理解为worker角色的进程个数(nginx启动后有多少个worker处理http请求。master不处理请求,而是根据相应配置文件信息管理worker进程. master进程主要...
  • .NET CORE 3.0新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,...Worker Services 咱也不知道怎么翻译成了这个名称,咱也不敢乱翻译,下文就保持原名称。。。,本文将会演示如何创建一个Worker ...
  • nginx worker_processes 配置 ** 搜索到原作者的话: As a general rule you need the only worker with large number of worker_connections, say 10,000 or 20,000. However, if nginx does CPU-intensive work as...
  • HDU 6576- Worker

    2019-11-13 22:25:56
    题目链接在这呢,详细看的点这里↑ 题目描述: Avin meets a rich customer today. He will earn 1 million dollars if he can solve a hard problem.... Any worker in the i-th warehouse can handl...
  • 原文发表于kubernetes中文社区,为作者原创翻译,原文地址 更多kubernetes文章,请多关注kubernetes中文社区 目录​ CRI-O的演变 阶段0:Docker是主导者 阶段1:CRI(容器运行时接口) 阶段2:CRI-O和OCI ...
  • H5 web Worker

    千次阅读 2016-08-13 17:47:04
    而据NHK电视台称,日本外务省在官方网站上公布了“入侵日本领海的中国公务船活动照片和资料”,并计划将其翻译成英语,向外界传播。" }, { " header ": "土耳其威胁退出北约" , " content ": "土俄翻开“历史新...
  • web worker In this article, a DIRTY, unsafe, unstable and scary eval method will be described. So, if you are uncomfortable with that, stop reading right now. 在本文中,将介绍一种肮脏,不安全,不稳定...
  • 还没使用过Web Worker? 推荐一款开源工具Workerize-Loader,让你在webpack项目中轻松使用Web Worker Workerize-Loader 将模块及其依赖项移动到 Web 辅助角色的 Web 包加载程序,自动将导出的函数反映为异步代理...
  • System Worker Threads

    2011-05-19 12:23:00
    http://msdn.microsoft.com/zh-cn/library/ff564587.aspx<br />先翻译成自己能看懂的。。。       To use a work item, a driver performs the following steps: Allocate and ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,330
精华内容 6,932
关键字:

worker翻译