惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Spread Privacy
Spread Privacy
H
Hacker News: Front Page
PCI Perspectives
PCI Perspectives
Webroot Blog
Webroot Blog
罗磊的独立博客
H
Heimdal Security Blog
TaoSecurity Blog
TaoSecurity Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
Last Week in AI
Last Week in AI
美团技术团队
Help Net Security
Help Net Security
The Hacker News
The Hacker News
C
Cisco Blogs
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
The Register - Security
The Register - Security
IT之家
IT之家
WordPress大学
WordPress大学
Jina AI
Jina AI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Help Net Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
NISL@THU
NISL@THU
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
B
Blog
T
Tenable Blog
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
S
Security Affairs
小众软件
小众软件
Hacker News: Ask HN
Hacker News: Ask HN
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
A
Arctic Wolf
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence

博客园 - 华腾智算

子系统框架存档20260717 响应式后台管理系统 smart-water 融合多端协同总体架构设计方案 现代前端架构的核心思想 极简设计框架 跨平台弹性栅格理念设计 多端统一设计理念 一套规则,多端伸缩的UI设计理念 现代栅格设计之一 设计中的栅格系统 智慧水利顶层设计之何为“水利矩阵”与“数字孪生” 从古典Web到AI原生超级应用:团队学习路线与未来架构蓝图 前端代码规范 v1.0 树型菜单全功能代码 最终最佳实践操作文档:统信UOS VSCode 全栈开发环境配置(基于 Chromium 浏览器) vscode-setting.json配置 VSCode 全栈开发环境初始化设置与跨平台配置指南(Windows/macOS 通用) VScode完整的跨平台适配方案 完整的跨平台 settings.json(飞雪飘鸿优化版) 数字孪生破局之道 完整的GLFW应用程序示例 雏形 程序方向 web三维 第一步,第一行,开始 绘制三角形 明确目标 从文本文件加载指令到模拟内存中,并显示前11个内存单元的内容 使用Python的pydub库播放音乐并打印二进制数据 python的音频处理 python加密与解密 mainwindows.cpp 十进制数213转换为二进制数的完整过程,使用除2取余法(也称为“重复除法法”) 二进制数 \((-1101.101)_2\) 转换为十进制数 - 华腾智算
最新架构设计
华腾智算 · 2026-07-15 · via 博客园 - 华腾智算

网页设计(Web开发)从早期的“面条式代码”演进到今天的前后端分离、Serverless架构,大致可以分为以下几个典型阶段。每个阶段都有鲜明的代码组织方式、文件架构和性能优化重点,你提到的“ASP/PHP/JSP混合编写”、“关注增删改查”以及“翻页优化、极致压榨单机性能”都可以对应到其中。


阶段一:古典动态页面时代(约 1995–2003)

代表技术: ASP、PHP、JSP(Servlet 早期)、Perl/CGI
核心特征: 服务器脚本和 HTML、CSS、JS 全部混写在一个文件里。

  • 文件架构:
    几乎没有架构可言。一个 .asp / .php / .jsp 文件里,从上到下依次是:连接数据库 → if/else 处理表单 → 拼接 SQL → while 循环输出 <tr><td> → 最后带上一点 <style><script>。网站的目录就是一堆这样的“页面脚本”,按功能名存放,比如 list.phpadd.phpedit.php

  • 关注点:
    主要就是 增、删、改、查。开发只要能“把数据取出来显示”、“把表单提交存进数据库”就完成任务,几乎没有业务层、表现层的区分。

  • 翻页与性能:
    翻页直接在 SQL 里 SELECT * FROM table LIMIT 0, 20,很多时候连索引都不建。数据量小还能跑,一旦数据上万,LIMIT 100000, 20 这种深分页就会导致全表扫描。优化手段非常原始:给常用查询字段加索引、做 MySQL 调优、输出静态化 HTML,都属于“单机打补丁”的路子。

这个阶段就是你所说的 “CSS、HTML、JS 混合写在一起,主要关注增删改查” 的典型时期。


阶段二:MVC 分层 & 模板引擎时代(约 2003–2009)

代表技术: Struts、Spring MVC、CakePHP、CodeIgniter、Smarty、JavaBean+JSP
核心特征: 业务逻辑、控制流程和视图开始有意识地分离,模板引擎取代了原始的“脚本式 HTML”。

  • 文件架构:
    项目开始有清晰的目录划分:

    /controllers
    /models
    /views (或 /templates)
    /libs
    

    控制器负责接收请求、调用模型、返回数据给视图;模型封装 SQL 和业务规则;模板引擎(如 Smarty、JSTL)负责用专门的语法循环、判断,不再在 HTML 里写 mysql_query。CSS/JS 逐渐独立为外部文件,不再内嵌。

  • 翻页与性能优化(对应“极致压榨单机”):
    数据量上去后,开始对 翻页类操作进行深度优化

    • SQL 层面: 用“覆盖索引 + 延迟关联”优化深分页,例如先 SELECT id FROM ... LIMIT 100000,20,再用子查询取完整数据,避免回表扫大量行。
    • 缓存层: 引入 Memcached 缓存数据库结果集,把频繁访问的列表页或分页数据缓存起来。
    • 静态化与动静分离: 将不常变的页面生成为 .html,通过 Nginx/Apache 直接返回,动态部分用 AJAX 小范围加载。
    • 单机极致优化: 全面启用数据库连接池、SQL 查询缓存(MySQL Query Cache)、操作码缓存(PHP 的 APC、eAccelerator),甚至手动用 C 写扩展。反向代理(Squid/Varnish)开始用于整页缓存。
    • 读写分离: 单机上虽然没分布式,但开始在代码里区分“读库”和“写库”,用多台低成本机器分担压力。

这个阶段完美对应你说的 “处理海量数据时主要针对翻页类进行优化,极致压榨单机服务器的性能,极致优化代码”


阶段三:Ajax 崛起 & 前端交互增强时代(约 2005–2012)

代表技术: jQuery、Prototype、DWR、早期 Ext JS
核心特征: 页面不再整页刷新,通过 AJAX 和 JSON 实现局部更新,前端开始承担更多交互逻辑。

  • 文件架构:
    仍然以服务器端 MVC 为主,但 views 下开始有专门输出 JSON/XML 的“接口视图”,前端多了一个 js/ 目录,里面是各种 jQuery 插件和手写的 AJAX 调用。后端控制器会判断请求类型,如果是 AJAX 请求,就返回 JSON 而不是 HTML。
    前后端代码还混在同一个项目里,但逻辑上已经在分离。

  • 翻页演进:
    列表页变成“无刷新翻页”:点击下一页按钮,jQuery 发 AJAX 请求,拿到 JSON 后在前端用字符串拼接或简单的模板(如 jQ Template)重新渲染表格。后端分页逻辑仍然在那,但交互体验大幅提升。

  • 性能关注点:

    • 前端开始做 资源合并与压缩(YUI Compressor),减少 HTTP 请求。
    • 后端接口的响应时间成为重点,继续深挖数据库、缓存。
    • 对于海量数据的翻页,除了 SQL 优化,还开始引入 搜索引擎(如 Solr、Sphinx)来承担复杂条件筛选和快速分页,单机压榨开始让位于“用专用组件解决专用问题”。

阶段四:前后端分离 & SPA 单页应用时代(约 2013–2019)

代表技术: AngularJS、React、Vue.js,搭配 Webpack/Grunt/Gulp,后端 Spring Boot、Express、Laravel 提供 REST API
核心特征: 前端彻底成为独立工程,后端只提供数据接口,浏览器端承担路由、渲染和状态管理。

  • 文件架构:
    两个完全独立的代码仓库:

    frontend/
      src/
        components/
        pages/
        services/ (API调用)
        store/ (状态管理)
      package.json
      webpack.config.js
    
    backend/
      controllers/ (API 控制器)
      models/
      services/
      routes/
    

    前端项目有自己的构建、编译、打包流程,最终产出一个纯静态的 dist/,部署到 CDN 或 Nginx。后端输出纯粹的 JSON(RESTful 或 GraphQL)。HTML、CSS、JS 再也不同服务器代码混在一起。

  • 翻页与海量数据的应对:

    • 传统 LIMIT offset, size 深分页问题在 API 中依然存在,常用解决方案:游标分页(cursor-based pagination),比如根据最后一条记录的 id 或时间戳来取下一页,避免 offset 偏移。
    • 数据量再大,后端往往引入 Elasticsearch 代替关系型数据库来做列表搜索和分页,利用其天生对深分页的优化(scroll API 或 search_after)。
    • 单机性能压榨不再是首选,架构转向 水平扩展:无状态的 API 服务器可以随意增加实例,前面挂负载均衡;数据库做 分库分表、读写分离集群;缓存使用 Redis 集群。
  • 代码优化重点:
    前端:代码分割、Tree Shaking、虚拟滚动(处理长列表)、Service Worker 缓存。
    后端:热点数据缓存、异步处理、数据库连接池精细化调优,但整体已经转向分布式架构下的吞吐量优化,而非纯粹的单机。


阶段五:SSR 复兴 & 全栈同构框架时代(约 2016–至今)

代表技术: Next.js、Nuxt.js、SvelteKit、Remix
核心特征: 在享受 SPA 开发体验的同时,解决首屏加载慢和 SEO 问题,部分渲染重回服务器端。

  • 文件架构:
    前端框架内自带“页面路由”和“API 路由”:

    /pages
      index.js (可做 SSR/SSG)
      products/[id].js
    /components
    /lib (公用逻辑)
    /pages/api (自带 serverless 函数)
    

    一份代码既可以生成静态页面,也可以在请求时在服务器端渲染,还能在客户端交互。前后端的边界再次模糊,但代码组织和分工依然清晰。

  • 翻页与性能:
    列表页常采用 SSG + 客户端请求 的模式:前 N 页静态生成,后续页通过 API 客户端加载。利用 ISR (增量静态再生成) 定时更新静态页。
    极致优化集中在首屏速度和 CDN 边缘缓存上,服务器端性能压力转移到构建和渲染服务上,弹性扩缩容变得普遍。


阶段六:Serverless / Jamstack / 边缘计算时代(2020–未来)

代表技术: Vercel、Netlify、Cloudflare Workers、Next.js Edge Runtime、Supabase/FaunaDB 等 BaaS
核心特征: “服务器”概念进一步淡化,前端通过静态托管 + 无服务器函数 + 边缘节点直接完成业务。

  • 文件架构:
    依然以现代前端框架为基础,动态能力由部署平台提供的函数和边缘计算承担。项目结构更偏向“按需组合服务”。

  • 翻页与海量数据:
    数据库本身提供分页能力(如 Supabase 的 range 查询),或者通过边缘函数直接访问全球分布的数据库(如 Cloudflare D1、Fauna)。你不再需要关心单机能压榨多少,因为伸缩在云上自动完成。深分页优化更多体现在 API 设计(限流、键集分页)和前端虚拟列表上。


总结你提到的几个现象在演进线上的位置:

  • ASP/PHP/JSP 混写、关注增删改查 → 阶段一(古典动态页)。
  • 文件架构初步分离,但主要目标仍是增删改查 → 阶段二初期(MVC 雏形)。
  • 极致压榨单机性能、针对翻页深度优化 → 阶段二、三(MVC + 缓存 + 读写分离 + Ajax)。
  • 再往后 → 前后端分离(阶段四)、SSR 同构(阶段五)、Serverless/边缘(阶段六),优化的重心从“单机压榨”转变为“分布式弹性”和“首屏体验+全球分发”。

每一个阶段都不是突然出现的,而是在海量数据、高并发和用户体验需求的推动下,代码组织方式、文件架构和优化重点不断演化的结果。