wsgi-mini-web框架的实现-1

1. 概述

首先给大家看一张图:


服务器请求动态页面过程.png

这张图是服务器请求动态页面的一个过程,通过这张图,我们可以看到,我们的服务器和web框架是通过一个叫做wsgi建立连接的,那么什么是wsgi呢?
wsgi(Web Server Gateway Interface),web服务网关接口,它允许开发者将选择web框架和web服务器分开,可以混合匹配web服务器和web框架,选择一个适合的配对。
web服务器必须具备WSGI接口,所有的现代Python Web框架都已具备WSGI接口,它让你不对代码作修改就能使服务器和特定的web框架协同工作。

2. WSGI接口

wsgi接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。我们来看一个最简单的Web版本的“Hello World!”:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return 'Hello World!'

上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:
-- environ:一个包含所有HTTP请求信息的dict对象;
-- start_response:一个发送HTTP响应的函数。
整个application()函数本身没有涉及到任何解析HTTP的部分,也就是说,把底层web服务器解析部分和应用程序逻辑部分进行了分离,这样开发者就可以专心做一个领域了。
application()函数必须由WSGI服务器来调用。有很多符合WSGI规范的服务器。而我们此时的web服务器项目的目的就是做一个既能解析静态网页还可以解析动态网页的服务器。

3. 伪静态、静态和动态url

3.1. 静态URL

静态URL类似 域名/news/2012-5-18/110.html 我们一般称为真静态URL,每个网页有真实的物理路径,也就是真实存在服务器里的。

  • 优点是:
    网站打开速度快,因为它不用进行运算;另外网址结构比较友好,利于记忆。
  • 缺点是:
    最大的缺点是如果是中大型网站,则产生的页面特别多,不好管理。至于有的开发者说占用硬盘空间大,我觉得这个可有忽略不计,占用不了多少空间的,况且目前硬盘空间都比较大。还有的开发者说会伤硬盘,这点也可以忽略不计。
  • 一句话总结:
    静态网站对SEO的影响:静态URL对SEO肯定有加分的影响,因为打开速度快,这个是本质。
3.2. 动态URL

动态URL类似 域名/NewsMore.asp?id=5 或者 域名/DaiKuan.php?id=17,带有?号的URL,我们一般称为动态网址,每个URL只是一个逻辑地址,并不是真实物理存在服务器硬盘里的。

  • 优点是:
    适合中大型网站,修改页面很方便,因为是逻辑地址,所以占用硬盘空间要比纯静态网站小。
  • 缺点是:
    因为要进行运算,所以打开速度稍慢,不过这个可有忽略不计,目前有服务器缓存技术可以解决速度问题。最大的缺点是URL结构稍稍复杂,不利于记忆。
  • 一句话总结:
    动态URL对SEO的影响:目前百度SE已经能够很好的理解动态URL,所以对SEO没有什么减分的影响(特别复杂的URL结构除外)。所以你无论选择动态还是静态其实都无所谓,看你选择的程序和需求了。
3.3. 伪静态URL

伪静态URL类似 域名/course/74.html 这个URL和真静态URL类似。他是通过伪静态规则把动态URL伪装成静态网址。也是逻辑地址,不存在物理地址。

  • 优点是:
    URL比较友好,利于记忆。非常适合大中型网站,是个折中方案。
  • 缺点是:
    设置麻烦,服务器要支持重写规则,小企业网站或者玩不好的就不要折腾了。另外进行了伪静态网站访问速度并没有变快,因为实质上它会额外的进行运算解释,反正增加了服务器负担,速度反而变慢,不过现在的服务器都很强大,这种影响也可以忽略不计。还有可能会造成动态URL和静态URL都被搜索引擎收录,不过可以用robots禁止掉动态地址。
  • 一句话总结:
    对SEO的影响:和动态URL一样,对SEO没有什么减分影响。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,981评论 19 139
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,643评论 8 265
  • 今天进入放假模式第一天,和大家分享一只金丝鸟吧。画完这只鸟我在朋友圈里发了一下,收到好多朋友的点赞和评论,其中一位...
    idea伟阅读 678评论 0 5
  • 科比.比恩.布莱恩特于1978年8月23日出生于美国宾夕法尼亚州费城,他是父母唯一的儿子。科比的童年是在意大利度过...
    f89139f22de4阅读 394评论 0 0
  • 一,今日功课: 1.今日事今日毕,回向给自己,建立对自己的信任感。为自己点赞。 今天按照工作计划把该安排的工作事项...
    郝丽2018阅读 136评论 0 3