如何才能做一个好网站系列 第六篇 别人是怎么访问你的网站
别人是怎么怎么在浏览器里面输入一个域名就能访问到你的网站呢?这个问题看起来很长,初步一看,还觉得很简单,仔细想想后,越来越觉得复杂。
这个访问网站的原理,是我们成为一个网站制作大师必须深刻理解的一个过程,注意,这个很重要,比什么.net java 性能效率 访问量这些东西更加重要。因为这个你所作工作的基础
先说说为什么必须了解这个原理吧:
1,和你网站功能有很重的关系,程序运行顺序的不同,会导致很多功能做了,但是却不起效果,你还找不出原因
2,网站的功能效果的实现,是依赖于css js 和一些交互ajax等等
3,网站功能维护的基础
4,网站出错了,从哪儿去解决
好了,其实原因多的很,我也不一一列举,这意义不大,我们还是赶快了解一下到底是怎么完成这个过程的吧
第零步,如果网站有全局设置文件,则在网站服务器上首先执行程序,注意,此过程是优先于你访问网站就执行的
第一步,别人输入网址,通过网络上的DNS服务器,找到对应的IP地址,也就找到你的服务器
第二步, 如果服务器上面,有网站服务,并且默认访问端口为80,则根据绑定的域名访问所在的目录
第三步,根据网站服务器的设置,有默认访问的文件名,例如index.asp , 则自动访问该文件,否则就报404错误
第四步,用户的浏览器开始读取你页面文件的,也就是html代码
第五步,网页浏览器解释器,根据html中的外部引用文件,开始下载外置的css js img文件
注意:由于浏览器设计的问题,同时下载外置文件的“通道”为2个,其他的文件则排队,下完了前面的,才会下载后面的,如果其中有个多个文件的下载速度比较慢,会影响所有文件的下载!
如果文件找不到,就会跳过~
第六步,网页开始从上至下开始解释html 并将 同步进行刷新网页里面的标签的样式定义,js定义等等。
第七步,浏览器验证js定义是否完整,是否有JS错误等,如果有,就抛出错误
注意:第六步与第七步是交替执行的
也许有经验的童鞋怀疑此过程是否正确,怎么没有框架里面那些方法定义的东西啊,比如说ASP.NET一加载,就会开始使用Page_Load事件呀。还有网页加载完的销毁事件等啊。
在每个动态语言里面,都有类似于加载前,加载时要执行什么的定义,这些定义的目的,是为了更加细节化以上的流程。在用户真正申请访问,或者叫申请读取html的时候,程序会从已经编译成功的文件中(例如asp.net 就是 bin里面的 dll 动态链接库文件 ,java 就是 jar 包),找到 命名空间 或者叫 包 相对应 执行的方法,然后执行下去,生成用户需要的html 。
而我们的浏览器提交的申请,其实是没有去直接调用这些方法的,请注意区别这个细微的差别 ,我们所需要的,其实只是那个结果,就是由程序生成html代码。
这个就是做好一个网站的核心,html代码,决定网站的展现。
所以,只要能生成你所需要的、合格的Html代码,用任何语言,任何平台都是可以的。