如何把动态页面改造成适合缓存的静态页面呢?就是通过前面提及的去除影响因素的方法,即通过动静分离把这些因素独立出来。下面以详情系统(Detail)为例介绍如何做动静分离。
UrL唯一一化。详情系统天然地就可以做到URL统一化,如每个商品都用ID标识,那么h:/:itm.toacom/itm.htm?d-=xxx就可以作为唯一-的URL标识。
分离浏览者相关的因素。浏览者相关的因素包括是否登录以及登录身份等信息,我们可以把它们单独拆分出来,通过动态请求来获取。分离时间因素。通过动态请求获取服务端输出的时间。
异步化地域因素。以异步方式获取详情系统上与地域相关的信息。
去掉Cookie。可以通过代码软件删除服务端输出页面中包含的Cookie,如可以通过unsetreq.http.cookie命令去掉Varnish中的Cookie.
分离出动态内容以后,如何组织这些内容也是非常关键的,因为页面中其他模块会用到这些动态内容(比如判断该用户是否登录等)。通过把这些信息JSON化,前端可以很方便地获取它们。
知道了分离哪些内容,又知道怎么组织它们,现在的问题就是如何获取它们并把它们和静态文件组装在一起。我们可以通过两种方式获取动态内容:ESI(EdgeSideIncludes)和CSI(ClientSideIncludes)。
ESI。即在Web代理服务器上做动态内容请求,并将请求插人静态页面中,当用户拿到页面时已经是一个完整的页面。如现在的详情系统就是采用这种方式。这种方式对服务端性能有些影响,但是用户体验较好。
CSI。即发起一个异步JS请求,单独向网站制作服务端获取动态内容。这种方式下的服务端性能更佳,但是用户端页面略有延时,体验稍差。
>>> 查看《如何改造动态系统 ?》更多相关资讯 <<<
本文地址:http://www.phpweb.com.cn/news/html/4478.html