当前位置: 首页 > news >正文

静态文件,动态文件,静态网站,动态网站

最近在学习fastAPI开发的时候,学到了静态文件,比较疑惑,去问了问AI

贴一下我的 prompt:

fastAPI和web开发中,静态文件,动态文件,静态网站,动态网站分别定义是什么,请你对比分析,并且讲一下实际案例

好,这几个名词在 Web 开发里常常被提到,很多人混着用。我们可以逐个拆开,再结合 FastAPI 的场景和实际案例对比。


一、静态文件 (Static Files)

  • 定义:不需要后端处理逻辑,浏览器直接请求就能得到的文件。内容不会随请求而变化。

  • 常见类型:HTML、CSS、JavaScript、图片(jpg/png)、视频(mp4)、字体文件等。

  • 在 FastAPI 中:可以用 StaticFiles 挂载一个目录来直接提供这些文件。

from fastapi.staticfiles import StaticFiles
app.mount("/static", StaticFiles(directory="static"), name="static")

这样访问 http://localhost:8000/static/logo.png 就能直接拿到 logo.png

  • 实际案例

    • 一个电商网站的商品图片、前端框架的 JS 库文件。

    • 你的前端 Vue/React 打包后的 /dist 文件夹(都是静态文件)。


二、动态文件 (Dynamic Files)

  • 定义:由后端代码动态生成的响应,不是固定存在磁盘上的文件。内容会随着请求参数或数据库状态不同而变化。

  • 形式

    • API 返回的 JSON 数据

    • 模板渲染生成的 HTML 页面(比如 Jinja2 模板)

    • 报表、日志下载(CSV/Excel 文件实时生成)

  • 在 FastAPI 中:大多数 @app.get()@app.post() 定义的接口返回的都是动态响应。

from fastapi.responses import JSONResponse@app.get("/user/{user_id}")
async def get_user(user_id: int):return JSONResponse(content={"id": user_id, "name": f"user_{user_id}"})

这里 user_id=1user_id=2 请求得到的内容不同,就是动态的。

  • 实际案例

    • 用户在社交平台打开自己的主页,每次页面都根据数据库里的用户信息生成。

    • 报表系统导出 Excel,每次文件都是现算出来的。


三、静态网站 (Static Website)

  • 定义:由一组静态文件(HTML、CSS、JS、图片)组成,部署到服务器后,直接由 Web 服务器返回,不依赖后端逻辑。

  • 特点

    • 内容固定(除非前端通过 Ajax 拉取数据)

    • 性能高,成本低,可以直接放 CDN 上。

  • 案例

    • 企业宣传官网(介绍公司、产品,没有复杂交互)。

    • GitHub Pages / Vercel 部署的个人博客(如 Hugo、Hexo 生成的博客)。


四、动态网站 (Dynamic Website)

  • 定义:内容由后端逻辑生成,通常需要数据库、用户交互。页面内容会根据用户请求动态变化。

  • 特点

    • 有注册登录系统

    • 页面展示依赖数据库和业务逻辑

    • URL 可能相同,但不同用户看到的内容不同

  • 案例

    • 淘宝、京东(商品价格、库存是动态的)

    • B 站(同一个视频页,登录后能看到不同推荐/弹幕)

    • 你用 FastAPI 做的电商平台(商家端上架商品,客户端能实时看到变化)


对比总结

概念定义典型实现案例
静态文件存在磁盘上,内容不变图片、CSS、JS、前端打包文件商品图片、Logo
动态文件后端生成,随请求变化API、模板渲染、导出报表用户数据接口、下载报表
静态网站全由静态文件构成,无后端逻辑HTML+CSS+JS企业官网、个人博客
动态网站页面内容由后端动态生成Web 框架+数据库电商平台、社交网站

👉 在 FastAPI 项目里,通常会 静态文件 + 动态文件混合使用

  • 静态文件:前端页面、样式、图片(挂载 /static)。

  • 动态接口:提供 JSON API,前端通过 Ajax 调用。

  • 整体上就是 动态网站(内容依赖数据库),除非你只做一个展示型博客才算“静态网站”。

http://www.dtcms.com/a/431383.html

相关文章:

  • 如何做自动网站网站开发使用的工具
  • 用.net做购物网站西安公积金 网站建设
  • S7-200 SMART PROFINET 通信入门:硬件组态与原理详解
  • 已知三极管的类型(NPN/PNP)和基极引脚,如何区分集电极(c)和发射极(e)
  • 沈阳做网站 熊掌号西安百度竞价代运营
  • FFmpeg和ZLMediaKit 实现本地视频推流
  • 学校网站模板图片马来西亚做网站
  • 深圳展览设计网站建设门户是什么意思
  • k8s-Service服务
  • Arthas JVM 性能排查
  • 从静态图表到交互叙事:数据可视化的新范式与实现
  • QT肝8天07--连接数据库
  • 三合一网站建设什么意思做生存曲线的网站
  • 如何查询网站接入商校园网站建设系统设计
  • 什么是 Apache Ignite?
  • NI-9234 采集卡拆解
  • 大连建站企业wordpress打造官网
  • 深度学习基本函数
  • 题解:P11035 【MX-X3-T2】「RiOI-4」消えた夏の夢
  • 网站开发网页gif设计公司多后缀域名查询网站
  • pink老师html5+css3day01
  • MOS管简单入门笔记(主讲NMOS,PMOS不常用)
  • 温州网站建设设计公司级做宣传图的网站
  • 使用 CSS 绘制中国国旗并添加艺术字“中国万岁!”
  • 俄语企业网站制作东莞建设银行网点查询
  • 计算机网络-分组交换网中的时延、丢包和吞吐量
  • Jakarta EE 实验 — Web 聊天室(JSP版)
  • P1471 方差
  • 【开题答辩全过程】以 Puk苍白游戏论坛网为例,包含答辩的问题和答案
  • Java包装类与泛型详解