静态页面 和动态页面。

静态页面是指服务器上预先存在的、内容固定的文件(如.html,.css,.js, 图片等),服务器的工作很简单:找到文件并把它发回给浏览器。
过程如下:
1、请求: 用户在浏览器输入网址(例如www.example.com/about.html)并回车。
2、处理: 服务器(如 Nginx, Apache)接收到请求,解析URL中的路径(/about.html)。
3、查找: 服务器根据其配置的根目录(例如/var/www/html)来查找对应的文件(找到/var/www/html/about.html)。

4、响应: 服务器读取该文件的内容,构造一个HTTP响应,这个响应包括:
HTTP状态码 成功找到则返回200 OK。
响应头 包含重要信息,其中Content-Type: text/html 告诉浏览器这是一个HTML文档,请把它渲染成页面而不是下载,其他头可能设置缓存、Cookie等。
响应体 即about.html 这个文件的原始内容。
5、渲染: 浏览器收到响应后,根据Content-Type 解析HTML文档,然后加载其中引用的CSS、JS等资源,最终渲染出完整页面。

如何设置?
对于静态页面,设置主要在Web服务器软件的配置文件中进行。
Nginx 示例
在nginx.conf 或sites-available/default 文件中,核心配置是指定网站根目录。
server {
listen 80; # 监听80端口
server_name example.com; # 域名
# 关键设置:根目录
root /var/www/example.com;
index index.html; # 默认首页文件
# 当请求到来时,服务器会在 root 目录下寻找对应文件
location / {
try_files $uri $uri/ =404;
}
}Apache 示例
在httpd.conf 或虚拟主机配置中,使用DocumentRoot 指令。
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/example.com"
<Directory "/var/www/example.com">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>动态页面的内容不是固定的,会根据用户、时间、数据库数据等因素变化(如知乎首页、淘宝商品页),服务器需要先执行程序(如PHP, Python, Node.js)来生成HTML内容,再发送给浏览器。
过程如下:
1、请求: 用户访问www.example.com/user/profile。
2、路由: Web服务器(如Nginx)接收到请求,但发现这不是一个静态文件,根据配置,它会将请求转发给后端应用服务器(如Gunicorn for Python, PHP-FPM for PHP, 或直接是Node.js进程)。
3、处理: 后端应用(如Django, Express.js)根据定义好的路由规则(URL映射)找到对应的处理函数(Controller)。
4、生成页面:
处理函数会执行逻辑查询数据库、处理表单数据、进行用户认证等。
* 它通常会加载一个模板(Template,如Jinja2, EJS),并将数据(从数据库查到的信息)“注入”到模板中。
* 模板引擎将数据 + 模板 合并,渲染成一个完整的HTML字符串。
5、响应: 后端应用将这个生成的HTML字符串作为响应体,返回给Web服务器,Web服务器再原样发回给浏览器,响应头中同样会包含Content-Type: text/html。
6、渲染: 浏览器收到动态生成的HTML后,像处理静态HTML一样进行渲染。
如何设置?
动态页面的设置更复杂,分为两部分:
a) Web服务器配置(以Nginx反向代理为例):
告诉Web服务器哪些请求需要转发给后端应用。
server {
listen 80;
server_name example.com;
# 处理静态文件,直接响应效率更高
location /static/ {
alias /path/to/your/static/files/;
}
# 处理动态请求,转发给后端应用
location / {
# 将请求代理到运行在 3000 端口的Node.js应用
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}b) 后端应用代码(以Node.js + Express为例):
这里才是“页面设置”的核心逻辑。
const express = require('express');
const app = express();
const port = 3000;
// 设置模板引擎(设置如何渲染页面)
app.set('view engine', 'ejs'); // 使用EJS模板引擎
// 定义路由和响应(设置渲染哪个页面以及提供什么数据)
app.get('/user/profile', (req, res) => {
// 1. 获取数据(例如从数据库)
const userData = {
name: 'John Doe',
email: 'john@example.com',
hobbies: ['Reading', 'Hiking']
};
// 2. 渲染模板并响应
// 它会找到 views/profile.ejs 文件,注入 userData 数据,生成HTML
res.render('profile', { user: userData });
});
app.listen(port, () => {
console.log(Server running on port ${port});
});| 方面 | 静态页面 | 动态页面 |
| 固定不变 | 动态变化,依赖程序生成 | |
| 服务器角色 | 文件查找器 | 流量分配器(反向代理) |
| 核心配置 | Web服务器(Nginx/Apache)的root 和index | Web服务器的反向代理规则 +后端应用的路由和模板 |
| 响应过程 | 接收请求 -> 查找文件 -> 返回文件 | 接收请求 -> 转发给后端 -> 后端执行逻辑+渲染模板 -> 返回HTML |
简单比喻:
静态页面 像在餐厅点一份固定套餐,厨师(服务器)直接从冰箱里拿出来给你。
动态页面 像点一份“厨师定制”,服务员(Nginx)把订单给厨师(后端应用),厨师根据现有食材(数据库)现场为你烹饪,然后再端上来。
希望这个解释能帮助你完全理解服务器是如何响应和设置页面的!
文章摘自:https://idc.huochengrm.cn/fwq/15297.html
评论
叶浩浩
回复服务器响应页面设置通常涉及解析HTTP请求,根据请求类型和参数从数据库或缓存中检索数据,然后构建HTML页面,最终将页面内容通过HTTP响应返回给客户端。
褚采梦
回复静态页面是预先存在的文件,服务器直接返回给浏览器;动态页是根据用户请求、时间或数据库数据变化的内容,设置上在Web服务器的配置文件进行配置即可实现响应和设置页面内容的过程不同主要在于处理逻辑的不同以及后端应用的参与程度有所不同等细节方面存在差异差别较大差异明显显著区分明确清晰明了地呈现出了两种页面的区别与联系总结起来就是两者在处理方式和内容上存在明显的不同之处需要根据具体需求进行设置和优化以提高用户体验和开发效率
芒周
回复静态页面是预先存在的文件,服务器直接返回给浏览器;动态页是根据用户请求、时间或数据库数据变化的内容,设置上在Web服务器的配置文件进行配置即可实现响应和设置页面内容的过程不同主要在于处理逻辑的不同以及后端应用的参与程度有所不同等细节方面存在差异差别较大差异明显显著区分明确清晰明了地呈现出了两种页面的区别与联系总结起来就是两者在处理方式和内容上存在明显的不同之处需要根据具体需求进行设置和优化以提高用户体验和开发效率