在一次HTTP请求和响应的过程中,客户端所请求以及服务器所返回的内容就称为Web资源。
Web资源总体上分为静态资源和动态资源两类。
分类依据:服务器是否需要对这些资源处理之后再发送给客户端。
对于静态资源,客户端只要请求访问这些资源,服务器无需进行额外处理,直接将这些资源发送给客户端即可。
典型的静态资源主要包括:
- 文件名后缀为“.htm”或“.html”的各类静态网页文件;
- 文件名后缀为“.jpg”、“jpeg”、“.gif”、“.png”的各类图片文件;
- 文件名后缀为“.txt”的各类文本文件;
- 文件名后缀为“.mp3”、“.avi”的各类音频和视频文件;
- 文件名后缀为“.css”、“.js”的各类前端脚本文件。
动态资源通常是指用脚本编程语言开发的脚本程序文件,根据网站所使用的脚本程序不同,脚本程序文件主要有文件名后缀为“.php”的PHP脚本文件以及文件名后缀为“.jsp”的JSP脚本文件等。
这些脚本程序在接收到客户端发来的请求之后,需要先在服务器端运行,然后再将得到的结果发给客户端。
客户端可以向这些脚本程序发送参数,然后服务器根据客户端请求参数的不同而向客户端发送动态变化的内容,从而实现客户端与服务端的交互。
比如我们在Web服务器的主目录中(/var/www/html)创建一个网页test.html,客户端在访问这个页面时,在浏览器中所看到的内容就是服务器端网页中的内容,所以这是一个典型的静态资源。
#test.html页面内容
<h1>测试网页</h1>
我们在服务器主目录中再创建一个网页test.php,客户端在访问这个页面时,在浏览器中所看到的内容则是网页中的代码在服务器端执行后所生成的结果,因而这是一个典型的动态资源。
#test.php页面内容
<?php
phpinfo();
?>
需要注意的是,动态页面的源码在客户端是无法看到的,动态页面的代码通常也是一个网站的核心资源。这些代码不能泄露,否则一方面可能会造成技术流失,另一方面如果这些代码被黑客获取到,也会带来很大的安全隐患。
目前的绝大多数网站都是采用的动态页面,比如在一个购物网站中可能会存在大量不同类别不同型号的商品,每个商品都有各自的产品信息,如果为每个商品都设计一个单独的网页,那么整个网站将无比庞大和复杂,后期维护起来也将非常困难。所以正确的做法应该是将所有的商品信息都存放在网站数据库里,然后编写一个脚本程序文件,该文件接收到客户端发来的要浏览某个商品的请求之后,先从数据库中调取相关商品的信息,然后再将这些信息与css框架、js脚本等结合在一起以HTML页面的形式发送到客户端。因而客户端所看到的内容是由服务端动态生成的,所以称为动态资源。
另外需要注意的是,网站中每个页面通常都是由多个资源共同组成的。比如某个网页中包含了图片、视频等内容,那么每个图片以及每个音频和视频文件都是一个单独的Web资源。而对于每个Web资源,客户端都需要单独发出访问请求。
比如我们利用Firefox浏览器访问网站www.51cto.com,然后按下F12键打开开发者工具,在“网络”栏中就可以看到当前页面中所包含的所有Web资源。