文章列表
吴浩麟 于 15天前发表 231 0 0
graphql [http://graphql.org] 用一种高效清晰的规范来替代目前正流行的RESTful架构。通过灵活的结构化查询语言让查询更高效,静态类型和规范提升前后端联调效率。作为一名前端我非常喜欢graphql,梦想有一天以前所有零散又没有文档的接口都被graphql所代替,这将极大提升我的开发效率和开发体验。等待不如自己动手,下面将介绍如何编写一个基于 hackernews [https://news.ycombinator.com] API [https://github.com/HackerNews/API] 的graphql服务。 在编写前先体验已经做好的 graphql服务demo [http://graphql.online/#X6CdVkXuC4tQ7WDC]
15天前
HTTP网络
陈映平 于 4个月前发表 453 0 1
引言 稍微了解HTTP协议的前端同学,相比对 Cache-Control 不会感到陌生,性能优化时经常都会跟它打交道。 常见的值有有 private 、 public 、 no-store 、 no-cache 、 must-revalidate 、 max-age 等。 各个取值所代表的含义,网上总结挺多的,这里就不打算再进行逐一介绍,感兴趣的可以一起探讨交流。 本文仅挑 no-cache 、 must-revalidate 这两个进行值进行探究对比。在项目实践中,这两个值用的比较多,也比较容易搞混。 Cache-Control: no-cache Cache-Control: max-age=60, must-revalidate 传送门: RFC2616关于Cache-Control首部的介绍 [https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9] 。 如果对论证过程不感兴趣,也可以直接跳到“对比结论”小节查看结论。 NO-CACHE、MUST-REVALIDATE简介
4个月前
HTTP网络
孙世吉 于 7个月前发表 1726 2 2
引言 通过网络获取内容既缓慢,成本又高:大的响应需要在客户端和服务器之间进行多次往返通信,这拖延了浏览器可以使用和处理内容的时间,同时也增加了访问者的数据成本。因此,缓存和重用以前获取的资源的能力成为优化性能很关键的一个方面。 序 本文用于解决以下六个疑问。 * 与缓存相关的HTTP首部字段主要 有哪些 ? * 这些HTTP首部字段之间的 联系与区别 ? * HTTP缓存首部字段的 优先级 ? * HTTP缓存首部字段的 特点与局限性 ? * 用户 不同的页面刷新行为的差别 ? * 在 实践中 我们该用哪些报文头来 控制缓存 呢? 文中使用的1.html以及doge.png如下所示 <!DOCTYPE html><html><head><metacharset="utf-8"><title>缓存控制测试</title></head><body><imgsrc="doge.png"></body></html> [http://7tszky.com1.z0.glb.clouddn.com/Fi4kT2Bo5j9leo6R-cpAYDWjYQsT]
7个月前
HTTP网络
梁伟盛 于 10个月前发表 2773 1 1
RESTFUL API 规范 V1.0 [toc] URI URI规范 * 不要用大写 * 单词间使用下划线'_' * 不使用动词,资源要使用名词复数形式,如:user、rooms、tickets * 层级 >= 三层,则使用'?'带参数users/1/address/2/citys (bad) /citys?users=1&address=2; (good) -------------------------------------------------------------------------------- REQUEST METHOD * GET:查询资源 * POST:创建资源 * PUT/PATCH * PUT:全量更新资源(提供改变后的完整资源) * PATCH:局部更新资源(仅提供改变的属性) * DELETE:删除资源 -------------------------------------------------------------------------------- 安全性与幂等性
10个月前
HTTP网络
陈映平 于 1年前发表 3169 8 0
为什么需要HTTPS HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。 举个最常见的例子,用户登陆。用户输入账号,密码,采用HTTP的话,只要在代理服务器上做点手脚就可以拿到你的密码了。 用户登陆 --> 代理服务器(做手脚)--> 实际授权服务器 在发送端对密码进行加密?没用的,虽然别人不知道你原始密码是多少,但能够拿到加密后的账号密码,照样能登陆。 HTTPS是如何保障安全的 HTTPS其实就是 secure http 的意思啦,也就是HTTP的安全升级版。稍微了解网络基础的同学都知道,HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义了数据如何进行包装。 HTTP --> TCP (明文传输) HTTPS相对于HTTP有哪些不同呢?其实就是在HTTP跟TCP中间加多了一层加密层 TLS/SSL 。 神马是TLS/SSL?
1年前
HTTP网络
王少飞 于 1年前发表 1088 0 0
什么是SOCKET? 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。AS3中我们一般使用的是基于TCP的流式socket。 TCP是一种流协议(stream protocol)。这就意味着数据是以字节流的形式传递给接收者的,没有固有的"报文"或"报文边界"的概念。 TCP是通过什么方式保证传输数据的可靠性的? 1、 应用数据被分割成TCP认为最适合发送的数据块。 2、 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 3、 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒(一般200毫秒左右)。 4、 TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错, TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
1年前
HTTP网络
王少飞 于 1年前发表 1209 2 0
最近的项目涉及到flash通过socket和服务器连接,刚接触这方面的内容,遇到了flash通信时安全策略的问题,这里记录下,有遇到相同问题的同学可以参考下。 HTML中的flash和服务器链接最初报错: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"] 。抓包: [http://7tszky.com1.z0.glb.clouddn.com/FjH2BfyoImuzkvaPkX1AjCmgK-81] flash有发请求但服务器端业务接口中并没有收到请求,抓包可以看到,flash先请求了843接口,但没有成功,重试了一次后,请求了80端口,三次握手之后,发送了一段数据: <policy-file-request/> , 同时在as文件中触发了 SecurityErrorEvent.SECURITY_ERROR 事件,通过排查发现是flash要请求安全策略文件。
1年前
HTTP网络
何璇 于 1年前发表 1773 1 0
前言 页面中常常会有需要跨域通信的需求实现,我们知道浏览器的同源策略是不允许不同域之间的相互通信的(这里不深究域的定义及如何才算跨域),比如a.com有b.com想要的数据,那么在b.com页面中发送ajax请求到a.com是不允许的,相信大家都知道一些跨域通信的实现方法: * JSON-P(安全性不好) * window.name + iframe(实现的方式恶心) * window.postMessage(HTML5) * proxy(麻烦的部署及维护) * ... 跨域资源共享(Cross-Origin Resource Sharing) [http://www.w3.org/TR/cors/] 是W3C的一项规定,它规定了在浏览器中,基于XMLHttpRequest对象的跨域请求通信的原理,基本上保持了原有对象的用法。 CORS需要服务器端及客户端双方面的更改支持。本文主要介绍如何发起一个跨域请求和如何在服务器端支持CORS。 兼容性 [http://caniuse.com/#search=cors] : * Chrome 3+ * Firefox 3.5+
1年前
HTTP网络
devinran ,唯封建与迷信难养也 于 1年前发表 1547 1 1
浏览器需要资源时,发起请求向服务器“要”,这个很容易,地球人都知道。 服务器有资源更新,想向浏览器“推”,这个好像就有点麻烦了。 Comet 就是这么个词,描述技术、协议和为浏览器提供可行且可扩展的低延迟数据传输的解决方案,,,的集合。 使用场景 * 监控 :天气啊、水库啊、核反应堆啊、外星人入侵啊......咳咳,等等。 * 报价 :0700涨到300块啦!南北车又跳水啦!恒生指数三万两千点啦! * 消息 :腾讯在线教育web化课堂聊天系统 = =、 还是蛮希望0700涨到300块的对吧(虽然这跟我并没有什么关系= =)。类似这些消息,需要服务器即时地更新到浏览器,因为浏览器并不知道恒生指数有没有涨到三万两千点。这个问题的实现方案就是今天要记录的Comet。 方案一:轮询 functionajax(data){ var xhr = new XMLHttpRequest(); xhr.open('get', '/cgi-bin/xxx', true); xhr.onreadystatechange = function(){
1年前
HTTP网络
devinran ,唯封建与迷信难养也 于 1年前发表 2471 1 1
LAST-MODIFIED 与 IF-MODIFIED-SINCE 在浏览器第一次请求某url获得的返回状态是200的响应头中,获取Last-Modified字段,这个字段标识此文件在服务器端的最后被修改时间,格式类似于: Last-Modified Thu, 15 Oct 201502:45:17 GMT 然后在浏览器第二次请求此url时,浏览器会根据之前获得的Last-Modified向服务器传送If-Modified-Since请求头,询问文件是否有被修改过 If-Modified-Since Thu, 15 Oct 201502:45:17 GMT 如果服务器端资源没有变化,则请求返回304。达到缓存效果。 如果服务器端资源发生改变或者重启服务器,则重新响应资源,返回200,与第一次相同。 如果If-Modified-Since的时间比服务器当前时间还晚,则会被认定为非法请求 ETAG 与 IF-NONE-MATCH
1年前
HTTP网络
henryguo ,郭亨厮混在腾讯 于 1年前发表 8166 3 1
[http://7tszky.com1.z0.glb.clouddn.com/FoHJ73Q2GpQ3n4fkeR2Wd80Dn6fD] 背景 2015年9月,nginx宣布支持类JavaScript语言。这意味着开发者可以更轻松、自由的控制全球最优秀的HTTP及反向代理服务器,并在此之上可以衍生出更多有用、好玩的创意。Nginx也更开发的走向了动态配置化的下一个阶段。大家可以点击查看 官方介绍链接 [https://www.nginx.com/resources/wiki/nginScript/] 。 先简单说说NGINX Nginx [engine x]是全球最受欢迎,也是最优秀的web服务器、反向代理服务器。通过第三方公司的统计,目前全球至少有23%的服务器采用了nginx,当然这个数字还在不断的扩大。目前也是国内BAT首选,所以这也是为什么我们第一时间关注到它的原因。 Nginx主要可以做以下几点: * 1、工作在TCP第七层,可以对HTTP协议的所有内容进行分析和处理。 * 2、支持lua,perl,JavaScript动态语言 * 3、支持第三方插件
1年前
HTTP网络
json 于 1年前发表 4450 6 1
用户在浏览器的地址栏中敲入了网站的网址 ,会发生哪些事情呢? * 用户在浏览器的地址栏中敲入了网站的网址 * 浏览器查找域名的IP地址 * 找到ip地址后,浏览器给web服务器发送一个HTTP请求 * 服务器“处理”请求 * 服务器发回一个HTML响应 * 浏览器开始显示HTML 大概就是这样的过程,下面我们来仔细的分析下浏览器是如何查找到域名对应的ip地址的。 DNS域名解析过程 当用户在浏览器中输入ke.qq.com并按下回车键后: * 第1步,查找 浏览器缓存 。 浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等。这个缓存时间太长和太短都不好,如果缓存时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有可能会有一部分用户无法访问网站。如果时间设置太短,会导致用户每次访问网站都要重新解析一次域名。 * 第2步,查找 系统缓存 。
1年前
HTTP网络