一 动态页面与静态页面区别

  静态页面:每一个网页都有一个固定的URL,且网页的URL以.html、.htm、.shtml等常见的形式为后缀。

  网页内容已经发布到网站服务器上,无论是否有用户访问,每个静态页面都保存在网站服务器上,也就是说静态网页是实实在在的保存在服务器上的文件,每个网页都是一个独立的文件

  静态网页没有数据库支持,在网站制作和维护方面工作量较大

  静态网页的交互性较差,在功能方面有较大的限制

说白了就是把页面上所有的东西设定好、做死了,然后放上去,不管谁在任何时候看到的页面内容都是一样的,一成不变(除非手动修改页面)

  动态页面:动态网页以数据库技术为基础,可以大大降低网站维护的工作量

  采用动态网页技术的网站可以实现更多的功能,如注册用户登录、在线查询、用户管理等。

  动态页面客户端发到服务端的请求会经过一个WEB server来处理,如果请求是静态资源,则交给web服务器。如果是动态资源,则现将请求叫一个WEB Container(WEB容器),在WEB Container中连接数据库,从数据库进行一系列的操作然后动态拼凑页面的展示内容,最后把页面交给WEB服务器,之后通过服务器将内容返回给客户端

什么是Web Server

web 服务器 主要功能是提供网上信息浏览服务。Web服务器可以解析http协议当Web服务器接收到一个http请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转,或者把动态响应的产生委托给一些其它的程序例如CGI脚本,JSP脚本等。无论它们的目的如何,这些服务器端的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。

常见的Web Server 有Nginx Apache lighttp等

打个比方吧,你要登录淘宝买东西这个一个步骤。

如上图就是用户在访问淘宝主页后再登录的过程

apache无法处理动态请求,所以我们要编写一个个的功能来处理这动态请求

  处理动态请求的伪代码 可以称之为web application 或简称为web app

    1.接受apache提交的用户请求,触发函数运行

    2.连接数据库 

    3.操作数据库

    4.根据获取的数据进行其他的逻辑处理

    5.返回给apache 

    6.关闭数据库

这样会有三大问题

  1.首先要研究透彻http协议。

  2.该代码只是为apache定制的代码,更换其它web server则无法使用

  3.若有其他动态请求(除了登录外)其他的请求,那么还要重复开发,影响效率

解决问题的方法

  1.重新定义一种协议标准。比如之前的web server 与web app 之间的"暗号"(http协议)晦涩难懂,那么这回就在原来的"暗号"上(http协议)弄一个"简单的暗号"

  2.apache是一个web server 这回换成nginx服务。nginx也是一个web server,那么只要是web server都要遵守http协议这个"简单的暗号"。所以,解决了问题一也就解决了问题二

  3.将重复的代码定义一个框架,当重复用的时候只要调取这个框架就可以了。这个框架叫web app框架(也叫web框架)

这样,三大问题就解决了。这里面的"简单暗号"就是网关协议  (例如cgi)

大家看下图

  一般的web app框架都是遵守网关协议的。也就是说,如果遵守了web app的框架,那么就遵守了网关协议。遵守了网关协议也就遵守了http协议。所以说只要按照web app框架去开发web app就可以了。

网关协议有哪些

   CGI即通用网关接口(Common Gateway interface)。是web server 与web app见得接口标准

    优点:CGI程序主要由Perl编写,但它可以由多种语言写成,一个有Bug的CGI程序不会使Web服务器崩溃。

       因为CGI程序在它们的操作系统shell中执行,这些程序与执行同一个CGI程序的其它HTTP请求不会出现并发冲突,所有服务为CGI程序提供支持

       跨平台性强

    缺点:CGI程序的应该答时间很长,会大量占用系统资源

       CGI不具有升级性

       CGI语言不是安全和面向对象的

  Fastcgi即快速cgi。大体上与cgi流程一样。只不过唯一区别是CGI的工作流程是:web server -->请求 -->cgi -->子进程-->处理请求-->web server-->关掉子进程。这样的流程是非常消耗系统资源的,所以fastcgi与cgi的区别是。产生一个子进程处理完请求后并不会直接关闭。等到下一次请求的时候直接处理。

 

  重点——网关协议之WSGI

    WSGI即(“Python” Web Server Gateway interface)的缩写 。是Python语言定义的Web服务器和Web应用程序框架之间简单通用的接口。它只是一个接口定义:它即不负责服务器的实现,也不负责网页应用的实现。它只是一个两边接口方式的约定(就像一种暗号)

  中间件的含义

中间件的好处:

       完成缓存、字符编码转换等一些其他功能

    并且这种设计降低了server端与web app端耦合度之后的产物。提升了灵活性

如何使用wsgi部署keystone

  现在社区主流的部署方法有:

    apache(wsgi)+keystone

    nginx(uwsgi)+keystone

步骤流程

  

OpenStack☞网关协议的更多相关文章

  1. openstack项目【day23】:keystone组件网关协议

    本节内容 一 静态页面和动态页面 二 什么是web server 三 什么是网关协议 3.1 引子 3.2 网关协议 四 网关协议CGI.FastCGI.WSGI.UWSGI 五 网关协议与keyst ...

  2. openstack 之~keystone之网关协议

    第一:静态页面和动态页面 上一篇博客介绍了HTTP后,我们知道一个web server的本质就是 浏览器发送一个HTTP请求: 服务器收到请求,生成一个HTML文档: 服务器把HTML文档作为HTTP ...

  3. BGP--边界网关协议

    要全面了解BGP,首先我们要回答以下看上去很简单的问题:为什么需要BGP,也就是说BGP是如何产生的,它解决了什么问题.带着以上问题,我们先简单的回顾一个路由协议发展的轨迹. 首先路由的实质是描述一个 ...

  4. keystone系列三:网关协议

    一 静态页面和动态页面 在了解了http协议后,我们知晓,一个web server的本质就是 浏览器发送一个HTTP请求: 服务器收到请求,生成一个HTML文档: 服务器把HTML文档作为HTTP响应 ...

  5. 网关协议学习:CGI、FastCGI、WSGI

    网关协议学习:CGI.FastCGI.WSGI https://www.biaodianfu.com/cgi-fastcgi-wsgi.html

  6. 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus

    物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接 ...

  7. 计算机网络-4-7-内部网关协议OSPF

    内部网关协议OSPF(开放最短路径优先) 出现的原因:为了克服RIP协议的缺点在1989年开发出来,**开放 表明OSPF协议不受任何厂家的限制.最短路径优先是因为使用了最短路径算法SPF**. OS ...

  8. 计算机网络-4-8-外部网关协议BGP

    外部网关协议BGP 1989年,公布了新的外部网关协议BGP(边界网关协议),我们目前使用最多的版本是BGP-4(但仍然是起草方案[RFC 4271]),简写为BGP. 在不同的自治系统AS中之间的路 ...

  9. OpenStack☞HTTP协议

    前言 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准 HTTP是一个基于TCP/IP通信协议 ...

随机推荐

  1. SEO中HTML标签权重列表

    网上流传很久的一份资料<SEO中HTML标签权重>,这里做一份备份. HTML标签权重分值排列 内部链接文字:10分 标题title:10分 域名:7分 H1,H2字号标题:5分 每段首句 ...

  2. python基础--常用的模块(collections、time、datetime、random、os、sys、json、pickle)

    collection模块: namedtuple:它是一个函数,是用来创建一个自定义的tuple对象的,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素.所以我们就可以 ...

  3. spring源码学习之默认标签的解析(一)

    继续spring源码的学习之路,现在越来越觉得这个真的很枯燥的,而且我觉得要是自己来看源码,真的看不下去,不是没有耐心,而是真的没有头绪,我觉得结合着书来看,还是很有必要的,最起码大致的流程是能够捋清 ...

  4. 常用命令4-文件搜索命令 2- whereis

    whereis比较局限,只能查看系统命令.

  5. FreeMarker中<#include>和<#import>标签的区别

    在使用freemarker作为前端页面模板的应用中,会有很多的freemarker模板页面,这些ftl会在不同的页面中重复使用,一是为了简化布局的管理,二是可以重复使用一些代码. 在freemarke ...

  6. 使用nuxt.js官方脚手架构建koa2的es6编译问题

    最近在学用nuxt集成koa2做vue后台,发现官方自带脚手架搭建的koa2使用的仍是es5语法,如果想用es6怎么办呢? 这是由于自带脚手架在构建koa2时默认的nodemon是没有使用babel编 ...

  7. Facebook iOS App如何优化启动时间

    http://www.cocoachina.com/ios/20160105/14870.html 提高 Facebook 应用的性能已经成为 Facebook 持续关注的领域.因为我们相信一个高性能 ...

  8. POJ1485 Sumdiv

    Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 22680   Accepted: 5660 Descripti ...

  9. 洛谷 P1948 [USACO08JAN]电话线Telephone Lines 最短路+二分答案

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 P1948 [USACO08JAN]电话线Telephone ...

  10. placeholder颜色更改

    ::-webkit-input-placeholder { /* WebKit browsers */ color:#999; } :-moz-placeholder { /* Mozilla Fir ...