许多项目时间久了会存在难以维护的困境,特别是十年前的老项目那时候普遍是PHP、JSP、ASP这样,将服务端代码和前端代码同时存在于一个项目里的情况。
这个时候项目维护久了就会变得很乱,大部分这样的项目是没有模块规范的,导致各个文件的依赖非常混乱。
这也就意味着项目迭代维护的开发成本是会越来越高的,而且时间越久,越不利于重构,特别是SEO这一块,十年沉淀的SEO,改版后可能就要重新进行权重配比。
这样就陷入了一个困境,重构又不可能,想让现代的前端技术应用于项目也变得很困难,最主要的还是服务端渲染的能力不能丢失。
在这个背景下就出现了一个方案,就是利用现代前端框架的SSR能力。
其实背后的拓扑很简单,老项目的部分页面,或者页面的某些模块用Vue/React这样的框架去实现,但是这部分实现的代码需要去支持SSR,然后单独起一个HTTP服务。
然后假定旧的项目是PHP的,那当PHP程序知道,这个页面或者这个模块是由另一个HTTP服务提供的,那就在PHP程序中去请求相应的HTML内容,在直接echo
到当前项目中。
背后的逻辑大概是这样:
浏览器
↓
PHP APP
↓
确定是否需要从另一个服务拿HTML
↓ ↓
如果不是 如果是
↓ ↓
↓ 请求SSR服务,SSR服务响应HTML
↓ ↓
原有逻辑 拼入PHP服务要响应的HTML
↓
响应浏览器
这个方案不确定业界是不是存在,个人把他命名为RHSSR,Remote HTTP Server Side Render。