“这里是云端源想IT,帮你轻松学IT”
嗨~ 今天的你过得还好吗?
别为了不属于你的观众
去演你不擅长的人生
- 2023.06.16 -
什么是静态页面?什么是动态页面?两者有什么区别?很多不了解前端技术的人可能会认为静态页面就是一个内容固定不变、没有任何效果的页面,而动态页面则是页面非常丰富、有各种交互效果和动态效果的页面。其实这个理解是错误的。今天小编将详细为大家分享一下静态页面和动态页面到底是什么,两者有什么区别。
一、什么是静态页面和动态页面?
通俗的来讲,静态页面是随着HTML代码的生成,页面的内容和显示效果就基本不会发生变化(除非修改页面代码),而动态页面,虽然同样页面代码不发生变化,但是其显示的内容确实可以随着时间环境或者数据操作的结果而发生变化。
因此静态页面和动态页面的认识应该定位在:是否有数据库加工这个环节。例如去购买T-shirt,我们直接从商店购买的T-shirt就是静态页面,而我们根据不同人兴趣定制T-shirt就是动态页面。
为了更好地认识理解静态页面和动态页面,我们重点了解一下两者之间的区别。
二、工作原理不同
静态页面中,用户通过页面操作的过程就是通过浏览器使用HTTP协议向服务器发送一个请求(Request),告诉服务器我需要展示那个页面,服务器收到请求后,直接根据用户的需求直接从文件系统中取出相应的文件,返回给浏览器,浏览器解析后为用户展示下相应的页面。
而动态页面中,用户通过浏览器发送的请求到达服务器之后,服务器根据请求内容从数据库中调取相应的内容组合成一个虚拟的文件,然后将文件发送给浏览器,用户才得以看到定制化的内容。
通过这两个图,我们可以非常直观的看到动态页面在相应用户的请求时还需要通过数据库获取相应的数据,就相当于你定制了一件T-shirt,工厂需要根据你的定义给你制作个性化的T-shirt。
动态、静态页面效果示例:
三、静态页面和动态页面的交互性差异
静态页面以展示为主,用户仅仅是通过页面获取相应的内容,而动态页面允许用户主动参与到页面之中,例如登录功能、查询功能、定制化页面内容等等。
因此从交互性的角度来看,用户在动态页面中更有参与感。目前除了一些特定的公开性展示的门户网站以外,大部分网站都是采用动态页面。
四、更新维护方式不同
静态页面内容是固定的,并且以一个完整的文件保存在服务器上,如果需要修改静态页面的内容,则需要找到此页面的源文件,并修改源文件的代码才可以实现内容调整。当网站内容信息非常大时,其维护成本同样会非常的大。
而动态页面以数据库技术为基础,当需要修改内容时,可以直接通过数据库修改,而不需要调整页面的源文件。这样可以大大降低网站维护的工作量,并且大幅度提高网站运营的效率。
五、响应速度不同
这个差异非常好理解,简单来说就是静态页面内容是固定的,服务器的响应时间较快,而动态页面还需要根据需求从数据库中调取相应的数据“组装”成为用户需求的页面,因此其响应速度会比较慢。
还是买衣服的案例,买已经做好的衣服,可以直接买了就走,而定制衣服则需要经过工厂的加工才能得到。当然在网页的访问中,虽然动态页面相对较慢,但是其差别也仅仅是以微秒甚至更小的计时单位衡量,对于人的反映时间0.1面来说,几乎可以忽略不计。
六、静态页面和动态页面的访问地址
静态页面的每个网页都有一个固定的URL,并且页面以.htm/.html/.shtml/.xml常见形式作为后缀,而且不包含“?”,这样的链接更有利于搜索引擎抓取并且收录。而动态页面的URL包含“?”,并且一般以.asp/.php/.jsp等扩展名结尾。
当然我们并不能够直接通过一个网页的URL来判断这个页面是静态页面还是动态页面。这是由于搜索引擎一般不会从一个网站的数据库中方位全部网页,因此动态页面中“?”对搜索引擎检索存在一定的问题。很多企业为了让自己网站有更多的收录,就会将动态页面的URL进行伪静态化。
静态页面是网站建设的基础,静态页面和动态页面之间也并不矛盾,为了网站适应搜索引擎检索的需求,即使选用动态网站技能,也可以将页面内容转化为静态页面发布。
以上我们从工作原理、交互性差异、更新维护方式、响应速度和访问地址等五个方面分析了静态页面和动态页面的不同之处,下面再简单归纳一下它们的特点都有哪些。
七、静态页面的特点
1)静态页面每个页面都有一个固定的URL,且页面URL以.htm、.html、.shtml等常见方式为后缀,而不含有“?”;
2)页面内容一经发布到网站服务器上,无论是否有用户访问,每个静态页面的内容都是保存在网站服务器上的,也就是说,静态页面是实实在在保存在服务器上的文件,每个页面都是一个独立的文件;
3)静态页面的内容相对稳定,因此容易被搜索引擎检索;
4)静态页面没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态页面制作方法比较困难;
5)静态页面的交互性穿插,在功能方面有较大的限制
静态页面相对更新起来比较费事,适用于通常更新较少的展示型网站。另外,如果扩展名为.asp但却没有连数据库,完全是静态的页面,那也是静态网站.仅仅.asp扩展名。
八、动态页面的特点
1)动态页面以数据库技能为基础,可以大大下降网站维护的工作量;
2)选用动态页面技能的网站可以完成更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等;
3)动态页面实际上并不是独立存在于服务器上的页面文件,只有当用户请求时服务器才返回一个完整的页面;
4)动态页面中的“?”对搜索引擎检索存在一定的问题,搜索引擎通常不行能从一个网站的数据库中访问全部页面,或者出于技能方面的考虑,搜索蜘蛛不去抓取网址中“?”后面的内容,因此选用动态页面的网站在进行搜索引擎推广时需求做一定的技能处理才能适应搜索引擎的要求。
总之,静态页面和动态页面各有特点,网站选用动态页面还是静态页面主要取决于网站的功能需求和网站内容的多少,如果网站功能比较简单,内容更新量不是很大,选用纯静态页面的方法会更简单,反之通常要选用动态页面技能来完成。
今天就先讲到这里了,更多Java基础知识持续更新中,欢迎一起学Java!
我们下期再见!
END
文案编辑|云端学长
文案配图|云端学长
局部静态变量的初始化与异常
1、问题
编程的过程中,思考了一个问题。当一个局部的静态变量使用一个函数的返回值初始化时,如果该函数抛出异常,那么,局部静态变量是否被定义成功,即,如果再次调用包含局部静态变量的函数,抛出异常的函数会不会再次被调用。
2、测试
就此问题,我写了如下的测试程序:
3、结果
1、在VC9中:第二次调用TestStatic函数不再抛出异常,即,局部静态变量已经定义成功。
2、在gcc中:第二次调用TestStatic函数依旧抛出异常,即,局部静态变量没有定义成功,需要再次进入定义,实现真正的内存分配空间。
对于结果,我更欣赏GNU的方式!
不管喜欢那种方式,测试结果都告诉我们,这段代码并部具有可移植性。VC的方式,让我比较失望,因为,因此而失去了一个通用的编程技巧。然而,知道什么是错的,比知道什么是对的还要重要,难道不是吗?
4、背景与应用
有朋友会问,这样的问题,什么情况下会遇到?
我只用一个比较经典的例子来说明。略微熟悉设计模式的朋友都会知道Singleton模式。一般返回的都是一个具体类的实例。虽说一般情况下构造函数中不要抛出异常,但免不了在某些情况下,可能会抛出异常,尤其是在这种单实例模式的情形下,没有必要一定保持构造函数中一定不抛出异常(stl要求容器中的类的构造函数不要抛出异常),所以,在这种情况下,我们似乎会希望,如果构造不成功,客户函数捕获异常,并修复错误后,再次获得单实例时,希望能够再次进行初始化,而得到一个正确的单实例的引用。然而,在这种情况下,面对两个编译器的测试结果,这段代码并不具有可移植性。
如果,只是如果,GNU编译器的方式是一个规范的话,那么,我们在Singleton模式下,就无需判断返回的对象是否有效,如果发生异常,也无须在实现类中编写弥补的代码,只需要再次重新获得Singleton即可,可以简化代码。但,这只是如果。
5、补充 回复 scwinter:
多谢兄弟关注!刚才我测试了一下,启用和未启用异常展开语义,编译的结果是不一样的。又掌握了一个知识点!结果如下:
E:/temp/C++>cl test.cpp
用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 15.00.30729.01 版
版权所有(C) Microsoft Corporation。保留所有权利。
test.cpp
C:/Program Files/Microsoft Visual Studio 9.0/VC/INCLUDE/xlocale(342) : warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc
Microsoft (R) Incremental Linker Version 9.00.30729.01