背景
我们先看看我们之前的开发场景:
程序员a开发功能A,程序员b开发功能B,当开发完毕后提测上线。
但是公众平台的功能越来越多,涉及的开发人员也越来越多。
于是乎就出现了程序员c、d、e、f分别开发功能C、D、E、F。
大家一起开发完功能提测上线。貌似看起来没任何问题。
我们先看看我们之前的开发场景:
程序员a开发功能A,程序员b开发功能B,当开发完毕后提测上线。
但是公众平台的功能越来越多,涉及的开发人员也越来越多。
于是乎就出现了程序员c、d、e、f分别开发功能C、D、E、F。
大家一起开发完功能提测上线。貌似看起来没任何问题。
上一篇我们介绍清楚了一个普通Web应用的网络结构,浏览器发起一个请求的目的无非就是想要Web服务器给他一个资源。资源对于这一篇的主题又有什么联系?看来没有解释清楚我这里想说的“资源”,上线这个话题没法继续了。
发个招聘广告:微信开放平台基础部招后台开发,有意者把简历发到我邮箱:raphealguo@qq.com
我们看看浏览器其实最后收到服务器返回的都是什么“资源”:描述页面结构的HTML文件;网页的样式CSS文件;网页的脚本JS文件;网页的音频/视频/Flash……
因此我们得到一个简单的结论:
资源 == 文件
对于那些动态数据(通过PHP/Java等执行后得到的结果),例如:HTML内容;JSON数据…… 其实我们也可以把这个请求的资源等同于对应的CGI执行文件(PHP脚本文件/CGI二进制等程序)
浏览器需要知道服务器回的是什么内容,所以每次的响应包还有一个类型说明这个资源是什么东西,也就是我们经常说的MIME type(Multipurpose Internet Mail Extensions)代表互联网媒体类型(Internet media type)
MIME type == 文件类型
好,既然浏览器每次需要服务器返回一个资源,那我们的Web服务器其实就是放着对应服务所需要的资源。所以我们把这个操作定义为上线:
上线 == 把资源放上Web服务器
而资源等同于文件,因此:
上线 == 把文件放上Web服务器
像云龙(@前端农民工)说过的,Web架构最重要的能力就是:如何管理资源跟如何部署资源,这里的部署资源我们可以简单认为就是上线。 留意一下,下文为了通顺,有些地方用了发布
跟 部署
这个字眼来描述上线的一个动作。 [Read more...]
这篇文章要介绍的是一个常见Web应用基本的过程跟网络模型,当然,对于多数的Client/Server应用也是适用的。延续这个系列文章的风格,只管通俗不管严谨。
总体模型概览图:
近期给实习生介绍一些基本概念,顺便梳理一下文章,方便之后可重复利用。
从事Web开发必须要了解从浏览器输入URL后到页面加载完之后的整个大概的流程,当然可以就某些点细化的研究下去,这一过程涉及到:HTTP/HTTPS协议、代理/反向代理、Web server、CGI、浏览器端的知识(HTML+Javascript+CSS)
只有把整个流程都梳理清楚,才有能力去讨论其他问题,例如如何去优化Web性能、如何利用工程化提高效率、在某些业务场景的技术方案取舍等。
本篇文章会以一个例子介绍计算机网络基本工作的过程,最终再详细介绍HTTPS是如何解决网络包加密问题。绘说明图找不到相关好的工具,所以文章引用了几张来自《图解TCP/IP》的图
我们来看一个常常出现的场景:
Alice在淘宝买了一件衣服,我们输入收货地址收货人付款后,卖家Bob帮我们把衣服打包放进纸箱里,贴上一个快递单:
寄件人:Bob
地址:北京市朝阳区朝阳路1号
收件人:Alice
地址:广东省广州市新港中路197号C公司
快递公司D派人去Bob家收到包裹,接着整理了公司的包裹,分批往个个城市送货。由于D公司没有直达广州的货运车,因此这些包裹先随着去上海的车到达上海的中转站之后,再把要发往广州的包裹搬到另一辆车发往广州中转站。
快递员Rapheal把快递送到C公司,快递中心的前台mm帮Alice签收后转交给了Alice。 [Read more...]