Django项目开发实战
上QQ阅读APP看书,第一时间看更新

1.1 网站运行原理

如今人们越来越依赖互联网来搜索信息和网购。大家坐在计算机前,打开浏览器,输入网站的网址,然后动动鼠标就能完成自己想做的事情,确实是非常方便。那么,当我们在浏览器中输入一个网站地址时,到底发生了什么?浏览器是如何知道我们想要什么的?又是如何把内容呈现在我们眼前的呢?本章将带领您学习这方面的内容。

1.1.1 HTTP

超文本传输协议(HyperText Transfer Protocol,HTTP)是用于分布式协作超媒体信息系统的应用协议。它是万维网数据通信的基础。HTTP使用了可靠的数据传输协议,可以确保数据在传输过程中不会丢失或损坏。

Web服务器负责托管Web资源,即网页的内容来源。最简单的Web资源是Web服务器文件系统上的文件。这些文件可以包含任何内容:它们可能是文本文件、HTML(HyperText Markup Language,超文本标记语言,用于创建网页)文件、Microsoft Word(微软公司开发的文字处理应用程序)文件、图像文件、视频文件或其他任何格式的文件。资源也有可能不是文件,而是脚本按照请求生成的动态内容。每个资源都有一个统一资源标识符(Uuiform Resource Identifier,URI)进行标识。最常见的URI形式是统一资源定位符(Uniform Resource Locator,URL),我们通常称其为Web地址。

下面来看一个典型的场景:用户在浏览器中输入一个网站地址时,浏览器会发送一个请求给服务器;服务器接受这个请求后,返回一个响应。浏览器收到响应后,开始渲染HTML页面。上述过程反复进行,直到所有内容都被成功加载和渲染。这时一个完整的页面就呈现在用户眼前了,如图1.1所示。

图1.1 请求-响应例子

HTTP支持几种不同的请求命令,这些方法称为HTTP方法。在上面的例子中,客户端使用的是GET方法。常见的HTTP方法如表1.1所示。

表1.1 常见的HTTP方法

每个HTTP响应消息都带有状态码。状态码是一个3位数字代码,用于告诉客户端请求是否成功,或者是否需要其他操作。常见的HTTP状态码如表1.2所示。

表1.2 常见的HTTP状态码

1.1.2 Web发展

英国科学家蒂姆·伯纳斯·李于1989年发明了万维网。万维网是信息时代发展的核心,也是数十亿人在互联网上进行交互的主要工具。

万维网发展的第一阶段称为Web 1.0。Web 1.0的内容创建者很少,绝大多数用户只是充当内容的消费者。个人网页在当时非常流行,这些网页主要是托管在ISP(Internet Service Provider,互联网服务提供商)上运行的Web服务器上的静态页面。这些页面的信息主要存储在服务器的文件系统中。

Web 2.0一词最先在1999年被提出。在Web 2.0网站上,用户不仅仅会阅读网站上的内容,还会创建个人账户,填写个人资料,参与网站的活动,从而为网站内容作出贡献。开发者鼓励用户使用网站的用户界面、应用功能和存储文件。

Web 2.0网站的功能包括网络社交、自媒体、标签、点击喜欢等。用户将自己的数据上传到网站上,并且对这些数据有一些控制权。网站可能还建有“积分”系统来鼓励用户参与。用户可以通过在新闻网站上评论新闻报道、在旅游网站上上传照片等方式参与网站内容的创造活动。

1.1.3 浏览器

Web浏览器就是我们通常所说的浏览器,是用于访问万维网信息的软件应用程序。万维网上的网页、图像和视频都由不同的URL标识,使用浏览器能够检索这些信息,并且在用户的设备上显示出来。

现在较流行的浏览器产品是Chrome(谷歌公司开发的免费网页浏览器)、Firefox、Safari(苹果开发的网页浏览器)和IE(微软公司开发的网页浏览器)。

如今,浏览器的功能已经很完备,如可以解释和显示Web服务器上托管的HTML网页、应用程序、JavaScript(高级的、解释型编程语言)、AJAX(一种浏览器端网页开发技术)和其他内容。很多浏览器提供扩展软件功能的插件,以便显示多媒体信息(包括声音和视频),或执行视频会议,或其他安全功能等。浏览器在结构上可以分为多个组件,如图1.2所示。

图1.2 浏览器的组件

用户界面是用户操作浏览器的界面。界面上通常会有地址栏、后退按钮、前进按钮、主页按钮、刷新按钮、停止按钮、书签等。除了显示请求的网页的窗口之外,其他部分都在这个界面中。

浏览器引擎是用户界面和渲染引擎之间的桥梁。它根据用户的操作来调用渲染引擎的接口。

渲染引擎负责在浏览器屏幕上呈现网页。渲染引擎解析CSS(层叠样式表,一种为结构化文档添加样式的计算机语言)定义的HTML样式,最后把布局在用户界面中显示出来。

现在的浏览器一般支持使用HTTP或文件传输协议(File Transfer Protocol,FTP)这样通用因特网协议来检索URL。网络组件处理因特网通信和安全问题,并可以将检索到的文档缓存起来。

JavaScript解释器负责解释并执行嵌入在网站中的JavaScript代码。解释的结果将被发送到渲染引擎以供展示。如果脚本来自外部,则先从网络中下载脚本,直到脚本执行的时候,解释器都保持暂停状态。

UI后端用于用户绘制组合框和窗口等基本小部件。

浏览器支持存储机制,如localStorage、IndexedDB、WebSQL和FileSystem。浏览器会在计算机本地创建小型数据库。这个数据库负责管理用户数据,如缓存、Cookie(网站为了辨别用户身份而存储在用户本地的数据)、书签和首选项。

1.1.4 MVC模式

模型—视图—控制器(Mode-View-Controller,MVC)是一种通常用于开发用户界面的体系结构模式,它将应用程序划分为3个模块。这样划分的好处是将信息的内部表示与信息呈现的方式和用户接受的方式分开了,实现了解耦,有利于代码的复用和并行开发,如图1.3所示。

图1.3 MVC模式

MVC模式是为传统桌面图形程序设计的,现在这种架构已经成为Web应用程序的主流。流行的编程语言都有现成的MVC框架,可直接用于Web应用的开发。