最新架构设计

网页设计(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/边缘(阶段六),优化的重心从“单机压榨”转变为“分布式弹性”和“首屏体验+全球分发”。

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

posted @ 2026-07-15 17:17  华腾智算  阅读(3)  评论(0)    收藏  举报
https://damo.alibaba.com/ https://tianchi.aliyun.com/course?spm=5176.21206777.J_3941670930.5.87dc17c9BZNvLL