CSS3计数器的下-遁地龙卷风

转载自:http://www.zhihu.com/question/20215561

结合::before实现自定义列表

同、WebSocket是HTML5发生底东西(协议),也就是说HTTP协议没有转,或者说不要紧,但HTTP是不支持持久连接的(长连,循环连接的莫算是)

率先HTTP有1.1及1.0的说,也就算是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个初说道,跟HTTP协议基本没有关联,只是为了配合现有浏览器的抓手规范而已,也就是说它是HTTP协议及之同一种植补偿可以经如此平等张图理解
www.4688.com 1
发混合,但是连无是周。
除此以外Html5是靠的同样多元初的API,或者说新规范,新技巧。Http协议本身才发1.0与1.1,而且与Html本身并未一直涉及。。
浅显的话,你可用HTTP协议传输非Html数据,就是这般=。=
还略来说,层级不一致。

body
{
  counter-reset:dnf;
}
div::before
{
  content:counter(dnf) “.”;
  counter-increment:dnf;
}
<body>
  <div>dnf</div>
  <div>dnf</div>
  <div>dnf</div>
  <div>dnf</div>
</body>
(1)
counter-reset:dnf会在条分缕析到对应元素执行,body只发一个,所以就实行同样不良
重置、定义dnf计数器,默认0,可以借助定默认值
counter-reset:dnf 10;
得定义多单计数器
counter-reset:dnf 10 lol;

其次、Websocket是什么样的合计,具体有啊亮点

首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的商事以来。
简的举个例子吧,用手上下比较泛的PHP生命周期来说明。
1) HTTP的生命周期通过Request来限制,也便是一个Request
一个Response,那么在HTTP1.0蒙,这次HTTP请求虽终止了。
每当HTTP1.1遭受进行了改善,使得有一个keep-alive,也就是说,在一个HTTP连接着,可以发送多只Request,接收多独Response
可要记住 Request = Response ,
在HTTP中永远是这么,也就是说一个request只能有一个response。而且这个response也是被动的,不克主动发起。

教练,你BB了这般多,跟Websocket有啊关联吗?
(:з」∠)吓吧,我刚准备说Websocket呢。。
首先Websocket是基于HTTP协议的,或者说借用了HTTP的说道来好部分握手。
在握手阶段是平等的
——-以下涉及专业技能内容,不思看的足超过了lol:,或者就看加黑情——–
第一我们来拘禁个突出的Websocket握手(借用Wikipedia的。。)

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com

熟识HTTP的童鞋可能发现了,这段类似HTTP协议的抓手请求被,多矣几单东西。
我会顺便讲解下作用。

Upgrade: websocket
Connection: Upgrade

以此就是是Websocket的为主了,告诉Apache、Nginx等服务器:留神啦,窝发起的是Websocket共商,快点帮我找到呼应的副手处理~不是那个老土之HTTP

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

第一,Sec-WebSocket-Key 是一个Base64
encode的价值,这个是浏览器随机生成的,告诉服务器:泥煤,不要忽悠窝,我要验证尼是勿是真是Websocket助理
然后,Sec_WebSocket-Protocol
是一个用户定义之字符串,用来区别和URL下,不同之劳动所待之商谈。简单了解:今晚自己一旦服务A,别为错啦~
末了,Sec-WebSocket-Version 是告诉服务器所采取的Websocket
Draft(协议版本),在首的时节,Websocket协议还于 Draft
阶段,各种奇奇怪怪的协议还出,而且还有不少希望奇奇怪怪不同之物,什么Firefox和Chrome用的无是一个版之类的,当初Websocket协议太多可一个非常难题。。不过本尚好,已经自然下来啦~大家都动的一个物~
脱水:服务生,我要之是13秋的噢→_→

接下来服务器会回去下列东西,表示曾接受到要, 成功建立Websocket啦!

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

这边开始就是HTTP最后负责的区域了,告诉客户,我曾打响切换协议啦~

Upgrade: websocket
Connection: Upgrade

还是是原则性的,告诉客户端将升任的是Websocket协和,而休是mozillasocket,lurnarsocket或者shitsocket。
然后,Sec-WebSocket-Accept 这个则是经过服务器确认,并且加密过后之
Sec-WebSocket-Key。服务器:好哪好啊,知道哪,给你看自己之ID
CARD来验证行了吧。。

后的,Sec-WebSocket-Protocol 则是代表最终采取的协商。

由来,HTTP已经完结她具备工作了,接下去就是是意以Websocket磋商进行了。
现实的情商就未以即时阐述了。
——————技术分析部分竣工——————
www.4688.com 2
您TMD又BBB了这般绵长,那到底Websocket有什么鬼用,http long
poll,或者ajax轮询不还得兑现实时信息污染递么。
www.4688.com 3
了不起好,年轻人,那咱们来谈同样摆Websocket有啊用。
来吃你吃点胡(苏)萝(丹)卜(红)
www.4688.com 4

(2)

三、Websocket的作用

以讲Websocket之前,我不怕顺手着说话下 long poll 和 ajax轮询 的规律。
率先是 ajax轮询 ,ajax轮询
的原理非常简单,让浏览器隔个几秒即发送一赖呼吁,询问服务器是否发生新信息。
此情此景重现:
客户端:啦啦啦,有没有出新消息(Request)
服务端:没有(Response)
客户端:啦啦啦,有没来新信息(Request)
服务端:没有。。(Response)
客户端:啦啦啦,有没起新消息(Request)
服务端:你好辛苦啊,没有什么。。(Response)
客户端:啦啦啦,有没发生新信息(Request)
服务端:好啊好哪,有啊给您。(Response)
客户端:啦啦啦,有没出新信息(Request)
服务端:。。。。。没。。。。没。。。没有(Response) —- loop

long poll
long poll 其实原理跟 ajax轮询
差不多,都是使轮询的道,不过用的凡死模型(一直打电话,没收到就非悬挂电话),也就是说,客户端发起连接后,如果没有消息,就直未回去Response给客户端。直到有消息才回到,返回了以后,客户端再次确立连接,周而复始。
场景重现
客户端:啦啦啦,有没有产生新消息,没有底讲话就相当于发了才返回给自家吧(Request)
服务端:额。。 等待到有信息之时刻。。来 给您(Response)
客户端:啦啦啦,有没发新消息,没有底语就是相当产生矣才回到给自己吧(Request)
-loop

自打上面可以视其实这有限种方式,都是在不停地树立HTTP连接,然后等待服务端处理,可以反映HTTP协议的另外一个特点,被动性
乌为被动性呢,其实就算是,服务端不可知积极沟通客户端,只能发出客户端发起。
简短地游说不怕是,服务器是一个异常疲劳的冰箱(这是个闭塞)(不会见、不可知积极发起连接),但是上面有发号施令,如果来客户来,不管多累还如美待。

说了这,我们再次来说无异说地方的缺陷(原谅我废话这么多吧OAQ)
自打点十分爱看下,不管怎么样,上面这有限种植都是怪耗资源的。
ajax轮询 需要服务器发高效的处理速度和资源。(速度)
long poll 需要出十分高之产出,也就是说同时接待客户的力。(场地大小)
为此ajax轮询 和long poll 都起或有这种气象。

**客户端:啦啦啦啦,有新信息么?
服务端:月线正忙碌,请稍后又试试(503 Server Unavailable)
客户端:。。。。好吧,啦啦啦,有新信息么?
服务端:月线正忙于,请稍后再试试(503 Server Unavailable)**

客户端:
www.4688.com 5
下一场服务端在边忙的要很:冰箱,我一旦重复多的冰箱!更多。。更多。。(我错了。。这还要是死。。)


言归正传,我们来说Websocket吧
经过上面这事例,我们好观看,这点儿种办法还无是最为好之不二法门,需要多资源。
同一栽消还快的进度,一栽要再行多之’电话’。这点儿种植都见面招致’电话’的需要更是高。
嗯对了,忘记说了HTTP还是一个凭状态协议。(感谢评论区的诸位指出OAQ)
深入浅出的说就是,服务器因为每天只要接待太多客户了,是只健忘鬼,你同样挂电话,他即把您的事物都忘光了,把你的物都弃了。你第二不行还得重新告诉服务器一举。

所以在这种气象下起了,Websocket出现了。
他解决了HTTP的立即几乎只难题。
首先,被动性,当服务器就协商升级后(HTTP->Websocket),服务端就得积极推送信息给客户端啦。
用地方的状况可以开如下修改。
客户端:啦啦啦,我而确立Websocket磋商,需要之劳务:chat,Websocket协议版本:17(HTTP
Request)
服务端:ok,确认,已升任吗Websocket商事(HTTP Protocols Switched)
客户端:麻烦您出信息之时光推送给我噢。。
服务端:ok,有的上会报告你的。
服务端:balabalabalabala
服务端:balabalabalabala
服务端:哈哈哈哈哈啊哈哈哈哈
服务端:笑坏我了哈哈哈哈哈哈哈

就改成了这般,只待通过一次HTTP请求,就可就源源不断的音讯传递了。(在程序设计受到,这种设计叫做回调,即:你产生信息了再也来打招呼自,而非是本身傻的每次飞来问您)
这般的商谈解决了方并有延迟,而且还特别耗资源的这种场面。
这就是说为什么他见面迎刃而解服务器上淘资源的题目呢?
实质上我们所用底顺序是如果经过简单层代理的,即HTTP协议于Nginx等服务器的解析下,然后还传递给相应的Handler(PHP等)来处理。
粗略地游说,我们出一个十分迅猛的接线员(Nginx),他顶住管题目传递给相应的客服(Handler)
本身接线员基本上快是十足的,但是每次都咬在客服(Handler)了,老有客服处理速度太慢。,导致客服不够。
Websocket就迎刃而解了如此一个难题,建立后,可以一直与接线员建立从始至终连接,有信息之时刻客服想方通知接线员,然后接线员在统一转交给客户
如此即使好化解客服处理速度过慢的问题了。

而且,在人情的计上,要不停的成立,关闭HTTP协议,由于HTTP是非状态性的,每次都要重传输identity
info(鉴别信息)
,来报告服务端你是何人。
尽管如此接线员很迅速,但是每次都设放如此一堆,效率也会见怀有下降之,同时还得频频将这些信息传递给客服,不但浪费客服的拍卖时,而且还会见于网路传输中吃了多的流量/时间
但是Websocket只需要无异于次HTTP握手,所以说整个报道过程是成立于平等赖连续/状态被,也即避免了HTTPwww.4688.com的非状态性,服务端会一直亮乃的信息,直到你关闭请求,这样就算缓解了接线员要反复解析HTTP协议,还要查看identity
info的音。

content:counter(dnf) “.”;//1
counter-increment:dnf; //2
无论是2语词以1前还是在1末尾都见面先执行,默认每次增长1,可协调指定
counter-increment:dnf 2;
1语句默认显示数字,还好是另list-style-type属性支持之任意值
content:counter(dnf,lower-alpha) “.”;
小写英文字母a,b,c,d

同时由客户主动询问,转换为服务器(推送)有信息之下即便发送(当然客户端或者相当主动发送信息过来的。。),没有音讯的当儿便交给接线员(Nginx),不需占用本身速度就慢的客服(Handler)了

有关怎么在未支持Websocket的客户端上采取Websocket。。答案是:不能够
但足以经过上面说的 long poll 和 ajax 轮询来 模拟出类似的功用

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website