进入网站的各种技术

Internet很棒,我认为我们都可以同意。但是您是否曾经坐下来思考过,一个网站实际上是如何进入您的计算机的呢?例如,PCPC.me背后有哪些技术?不仅仅是简单的HTML文件和图像集合。

亲爱的读者,请继续阅读以确切了解如何运行,托管和服务网站以供您消费。

硬件

让我们从托管网站的最基本组件开始-硬件。从本质上讲,用于托管网站的计算机实际上与您或我在家中拥有的台式机没有什么不同。它们具有更多的内存,备份驱动器,并且通常具有光纤网络连接-但基本上它们是相同的。实际上,任何旧机器都可以托管网站-这只是能够将页面发送给用户的速度的一个例子。

您可以在此处详细了解有关可用的各种托管的信息。在成千上万个网站之间共享的单台机器,每个月要支付5美元,这是一台完整的专用服务器,该服务器能够运行PCPC.me – 每月花费数千美元的东西

系统

大多数Web服务器计算机运行的是Linux的优化版本-尽管那里有大量运行Windows的服务器,通常是在Web应用程序基于ASP或dotNet构建的公司环境中。截至今年1月,最受欢迎的Linux虚拟主机发行版是Debian,紧随其后的是CentOS(基于RedHat),二者均可免费下载并进行试用-据说每个主机可托管约30%网站。 Google当然会运行自己的自定义Linux和自定义的文件系统。

Web服务器软件

这才是真正开始与众不同的地方。 Web服务器软件是接收传入请求并提供页面或文件的应用程序。网络服务器软件本身与所服务的网页的语言无关,Apache服务器完全能够提供Python,PHP,Ruby或许多其他语言的服务;但这不是普遍的。当前的市场份额表明,Apache运行着约65%的顶级网站,Microsoft IIS占15%,nginx占10%。人们认为nginx可以更好地处理高并发站点-即一次可以有成千上万的用户在该站点上-实际上在PCPC.me中使用了它。

加载网站,打开计算机和网站服务器之间的套接字(连接)。然后,从请求,数据和状态代码的来回开始,对HTTP调音进行详尽而冗长的操作。当您请求此页面时,我们的服务器回复了 200 –确定,表示“确定,到这里就可以了" ;如果您以前访问过,您的浏览器可能还会问“嘿,我的浏览器缓存中已经有此图形的副本,我真的需要吗?" ,我们的服务器对此做出了回应< strong> 304 –未修改,或“不,太酷了,我们还没有对其进行任何更改,只需使用那个"

有时,您会找到可怕的 404 –未找到,但我无需向您解释该错误代码。如果您曾经打开过Firebug或浏览器的开发人员模式,就会惊讶地发现来回进行了多少–这不是一个简单的“给我该页面" –“确定,在这里",但实际上是数百个较小的交互。

静态文件和内容分发网络

在所有网站上,有些文件几乎从未更改。诸如Javascript,CSS,图像,PDF或mp3之类的东西。这些被称为静态文件,为了向您提供这些文件,网络服务器软件只需获取文件并将其发送即可。容易吧?没那么快。

不幸的是,由于文件的大小,发出大量静态文件是一项非常艰巨的任务。如果您曾经访问过一个网页,而您实际上可以坐在那里观看图像的加载,那是因为网络服务器本身是在为您获取这些文件-它们根本没有经过优化以进行此类工作。相反,大型网站将所有这些静态文件卸载到了称为 Content Delivery Network 的网站上-单独的服务器经过优化,可以在瞬间完成可笑的快速静态文件的服务。

他们还通过将服务器物理定位在相互镜像的全球不同位置来实现此目的,因此数据传输给您的距离更短。现在,即使您正在阅读的PCPC.me文章实际上是在美国托管的,图像和Java脚本也都通过本地CDN来自您附近的某个地方。

动态内容– Web编程语言< /

几乎所有现代网站都具有某种动态内容,无论是WordPress在博客文章中添加评论,还是Google提供搜索结果。为了使网页具有动态性,需要使用网络编程语言。我之前写过关于您可以使用的各种语言的文章(并因认为PHP是最好的而引起了激烈的争论)。无论您选择哪种语言,它都会与Web服务器软件层结合使用,以首先动态生成页面内容,然后将其提供给您。

数据库

所有动态网站的背后都是数据库–大量存储原始数据的数据库,使我们可以通过多种方式访问​​该数据。为此,需要一种单独的数据库编程语言,其中最流行的是SQL(结构化查询语言),并且它的变体很多。数据库包含不同的数据表以代表不同的数据结构–一个可能是项目列表;另一个可能是项目列表。另一个对这些文章发表评论。使用SQL,我们可以通过多种方式对数据进行排序,组合和呈现。

例如在WordPress中,“帖子"至少由标题和日期组成,并且可能包含一些实际内容。一个单独的表用于存储对该文章的评论,另一个表用于存储类别列表,然后又一个存储哪些类别已分配给该文章的列表。通过交叉引用和从所有这些中提取数据,WordPress在应用主题并通过网络服务器软件将其呈现给您之前,收集了博客特定页面所需的所有信息。

在计算方面,提供静态HTML文件非常容易-服务器只需要提取文件-另一方面,动态内容需要大量工作才能将页面放在一起,并且数据库以及对该数据进行的处理。缓存系统通过创建这些动态页面,然后基本上将它们另存为静态HTML文件,使我们大饱眼福。当再次请求完全相同的页面时,无需重新计算该页面,从而加快了站点的速度。

缓存是一个广义术语,尽管它可能意味着很多事情– CDN是一种缓存;还有用于常见查询的数据库缓存(例如WordPress,每次有人查看您的帖子时,都会向数据库询问您博客的标题-因为实际上是这样)。我之前写过关于如何为WordPress设置流行的W3 Total Cache系统的信息-几乎可以缓存任何东西。

因此,正如您所看到的,实际上涉及到大量的工作和许多技术托管网站。但是,这并不是说您无法在不到一个小时的时间内建立并运行自己的博客。问题的根源在于将其扩展到成千上万的用户。

有问题吗?问一下,我会尽力回答。您对网站投入多少精力感到惊讶吗?

标签: 网页设计 网站开发