输入网址,点回车键之后
首先是要把域名转换成IP地址,就是所谓的DNS解析
这个中间有一个步骤,开发人员经常会操作的,修改系统的hosts文件
在本地开发,使用自定域名可以很方便的模拟正式服务器环境对应的域名。
hosts 文件 , 这篇先不做介绍,后续再说
如果本地修改了hosts ,那么找到的IP, 就是本地设置的IP地址
本地没有配置过hosts,就会去找域名设置的ns记录对应的DNS服务器
这一步,多数开发人员都操作过,所以新手不妨买个域名设置一下看看,费用不高
从DNS获取对应的IP
很多DNS服务都支持区域划分,实现分流的效果,所以不同地区可能对应不同的IP
找到了IP,也就找到了服务器。这一层,也有一些技术点
比如使用了lvs、nginx反向代理,很多服务器隐藏在这个后面,为大家提供服务。
便于理解,直只说单台服务器。
根据IP,访问到web服务器。
常见的web服务器nginx、Apache、lighttpd、tomcat。
以 nginx + php + mysql + memcached 为基础服务,以这个博客为例来解释一下后续的处理。
请求被nginx接管,nginx根据配置文件设置的root目录(/web/blog/),查找对应的文件。
如果访问的是静态页面,由nginx把结果直接返回,处理结束。
这里有一个CDN,CDN的全称是Content Delivery Network,“内容分发网络”。
通俗描述一下作用:把内容在很多的服务器进行缓存,访问的时候,根据地域分布、负载均衡或其他调度规则,直接从最近、最快的服务器上,把访问的数据返回。
静态文件css、js大多都在cdn上。
如果访问的是php文件,nginx把处理请求,转交给php来处理,处理完成之后,再返回给nginx。
php处理数据的时候,用到最多的是数据库,比如MySQL。经过一系列的查询,检索出用户需要的数据,并返回结果。
为了加快数据的返回,这一层里也有一些常用措施。
1. 生成静态页面,或者把查询的结果集保存到文件
2. 把查询结果放入到memcached,减少MySQL查询
PHP把结果数据组装成浏览器可识别的html格式,作为页面的数据载体。
这里可以关注一下,客户端缓存。
1. Expires:+过期时间
2. Cache-control
3. Last-Modified/If-Modified-Since
4. ETag/If-None-Match
nginx把总的结果,返回给浏览器。
首发地址:从浏览器地址栏到服务器后端-初学者入门