在最基础的层次,每当一个浏览器需要一个网络服务器上的托管文件时,浏览器会通过HTTP请求这个文件。当这个请求到达了正确的网络服务器(硬件),这个HTTP服务器(软件)返回所请求的文档,同样通过HTTP。
静态网络服务器(staticwebserver),或者堆栈,由一个计算机(硬件)和一个HTTP服务器(软件)组成。我们称它为“静态”因为这个服务器把它的托管文件“保持原样”地传送到你的浏览器。
动态网络服务器(dynamicwebserver)由一个静态的网络服务器加上额外的软件组成,最普遍的是一个应用服务器[applicationserver]和一个数据库[database]。我们称它为“动态”因为这个应用服务器会在通过HTTP服务器传送托管文件到你的浏览器前,对这些托管文件进行更新。
举个例子,要生成你在浏览器中看到的最终网页,应用服务器或许会用一个数据库中的内容填充一个HTML模板。网站像MDN或者维基百科[Wikipedia]有成千上万的网页,但是它们不是真正的HTML文档,它们只是少数的HTML模板以及一个巨大的数据库。这样的设置让它更快更简单地维护以及交付内容。
要取得一个网页,你的浏览器会传送一个请求到网络服务器,而这个网络服务器会进而在它自己的存储空间中搜索所请求的文件。当找到这文件时,这个服务器会读取它,按需处理它,并且把它传送回浏览器。让我们更仔细地观察这些步骤。
一个网络服务器首先需要存储这个网站的文件,也就是说所有的HTML文档和它们的相关资源[relatedassets],包括图片,CSS样式表,JavaScript文件,字形[fonts]以及影像。
严格来说,你可以在你自己的计算机上托管所有的这些文件,但是在一个专用的网络服务器上存储它们会方便得多,因为它
一旦你设置好一个网络托管解决方案,你只需要去上传你的文件到你的网络服务器[uploadyourfilestoyourwebserver]。
第二点,一个网络服务器提供了HTTP(超文本传输协议)支持。正如它的名字暗示,HTTP明确提出了如何在两台计算机间传输超文本(比如说链接的网络文档[linkedwebdocuments])。
一个协议[protocol]是一套为了在两台计算机间交流而制定的规则。HTTP是一个文本化的[textual],无状态的[stateless]协议。
粗略地说,一个服务器可以提供静态或者动态的内容。“静态”意味着“保持原样地提供”。静态的网站是最容易设立的。
“动态”意味着服务器会处理内容甚至实时地从一个数据库中产生它。这个解决方案提供了更多的灵活性,但是技术堆栈变得更难去处理,让建立网站更显著地复杂。
以你MDN页面为例子。在正在托管它的网络服务器里,有一个应用服务器会从数据库提取文章内容,安排它的布局,把它放置在一些HTML模板中,然后为你传输结果。在这里,这个应用服务器叫做Kuma并且是由Python(使用Django构架)构建的。Mozilla团队为了MDN的特殊要求开发Kuma,但是这里有很多相似的建立在很多其他技术之上的应用。
这里有太多的应用服务器,所以提供一个具体的服务器是挺难的。有些应用服务器迎合具体的网站类别,像是博客,百科或者电子商店;其他的应用服务器,叫做CMSs(内容管理系统[contentmanagementsystems]),则更加通用。如果你正在开发一个动态网站,花一些时间去选择适合你需求的工具。除非你想要学习一些网络服务器编程[webserverprogramming](而这本身就是一个令人兴奋的领域!),你不需要去创建你自己的应用服务器。这只是在重新创造轮子。
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。