要生活得漂亮,需要付出极大的忍耐,一不抱怨,二不解释,绝对是个人才。——《变形记》

1、概述

在大型网站中,如京东和当当商品详情界面,看到的页面基本上是静态页面。为什么都要把页面静态化呢?把页面静态化,好处有很多。例如:访问速度快,更有利于搜索引擎收录等。

目前主流的静态化主要有两种:
(1)一种是通过程序将动态页面抓取并保存为静态页面,这样的页面的实际存在于服务器的硬盘中;

(2)另外一种是通过WEB服务器的 URL Rewrite的方式,它的原理是通过web服务器内部模块按一定规则将外部的URL请求转化为内部的文件地址,一句话来说就是把外部请求的静态地址转化为实际的动态页面地址,而静态页面实际是不存在的。这两种方法都达到了实现URL静态化的效果,但是也各有各自的特点。

(3)还有一种是把页面划分成子数据块,每个数据块可能是一个inc文件,也可能多个数据块包含在一个inc文件中。具体的数据块划分根据页面的业务结构来处理。比如:网站头尾等公共数据块可以独立成一个文件。

2、实时生成静态页面

使用freemarker实现生成静态页面,将页面的实际存在于服务器的硬盘中,然后通过nginx反向代理服务器访问资源;

将动态页面转化为实际存在的静态页面这种方法,由于静态页面的存在,少了动态解析过程,所以提高了页面的访问速度和稳定性,使得优化效果非常明显。所以这种方法被广泛采用。但是它的局限性同样存在。对于大型网站而言,这种方法将带来不可忽视的问题。
一、由于生成的文件数量较多,存储需要考虑文件、文件夹的数量问题和磁盘空间容量的问题;
二、页面维护的复杂性和大工作量,及带来的页面维护及时性问题,需要一整套站点更新制度。

虽然静态页访问速度快,但实现起来毕竟还是比较麻烦了,维护也是一个麻烦事情。如果您的站点更新速度快那么就需要在你的后台数据更新部分调用相应的createHTML方法实时的生成静态页面。如果更新速度不慢可以在后台手动更新或者利用操作系统的定时任务功能去执行你的静态页面生成程序。

3、实战商品详情页面静态化

输出文件的名称:商品id+“.html”
输出文件的路径:工程外部的任意目录。
网页访问:使用nginx访问网页。在此方案下tomcat只有一个作用就是生成静态页面。
工程部署:可以把生成页面服务部署到多个服务器上。
生成静态页面的时机:商品添加后,生成静态页面。可以使用Activemq,订阅topic(商品添加)

(1)商品添加时,发送topic消息给消息队列服务器;
(2)消息队列服务器收到topic消息后,将消息发送给订阅topic的静态页面生成服务,生成静态页面;
(3)有多个静态页面生成服务器订阅商品添加topic,因此保证了多台服务器都一致保存了商品信息,实现了备份;
(4)外界通过nginx反向代理根据并发量和任务强度访问不同的静态页面服务器;
(5)通过nginx的http服务器访问静态资源实现网站页面静态化。

Freemaker生成静态页面的时机
添加商品后使用activemq广播消息,freemaker监听到消息去数据库查询商品生成静态页面
为什么不去redis中获取商品信息,添加商品时还没有存到redis中
为什么不直接使用商品信息还要到数据库中查询:不在一个项目中传输数据麻烦,也起不到提高效率的作用;而且修改数据时也要修改静态页面

3、WEB服务器的 URL Rewrite的方式

URL Rewrite方式特点同样鲜明,由于是服务器内部解析的地址,所以内容是实时更新的,也不存在文件管理和硬件问题,维护比较方便。在服务器级URL Rewrite重写技术并不影响页面的执行速度。但是URL Rewrite的门槛比较高,国内虚拟主机大多不支持,而且虚拟主机是目录级的URL Rewrite,通过遍历目录读物URL转发规则的方式将大大降低页面的执行速度。

4、将页面分成子数据块

把页面划分成子数据块,每个数据块可能是一个inc文件,也可能多个数据块包含在一个inc文件中。具体的数据块划分根据页面的业务结构来处理。比如:网站头尾等公共数据块可以独立成一个文件。

5、总结

对于一个大型网站来说,生成的页面数据会非常多,管理这些页面文件又是一个问题。例如有的页面被删除了,而已经生成的页面数据还会存在各个web服务器上。这时就需要通过后台系统记录这些页面文件的部署位置,以便今后统一管理。同时业务组件的量也可能会比较多,特别是存在多版本的情况下,所以也需要把业务组件的配置情况记录到数据库中,便于统一管理。

在web开发里,除了需要浏览器处理的,其他技术都可以当做服务端来理解,如果我们网站使用到了CDN,使用到了静态web服务器例如apache,以及服务端的web容器例如jboss,那么按请求的行进路径,我们结果处理越早那么网站响应效率也就越高,所以当请求在CDN返回了,那么肯定比在apache返回效率高,在apache就返回了肯定比jboss返回的效率高,再则服务端的web容器本身因为服务端程序运行要消耗部分系统资源,所以它在处理请求的效率会比CDN和apache差很多,所以当我们按照动静分离策略拆分出了静态资源后,这个资源能不放在最底层的服务端的web容器处理就不要放在服务端的web容器里处理。

java网站页面静态化方案相关推荐

  1. 淘淘商城第86讲——实现商品详情页面静态化方案时,你没遇到过java.lang.IllegalArgumentException或者java.lang.NullPointerException这种异常

    问题描述 今儿个,我在实现商品详情页面静态化方案时,遇到了一个蛮奇怪的异常,为什么说蛮奇怪呢?因为它只在第一次测试的时候出现过,后面就再也没出现过了. 我先描述一下这个异常是怎么出现的,我在淘淘商城后 ...

  2. 网站页面静态化(一)初识

    平日里,相信大多数人都有上网的习惯,而对于大型网站而言.最终呈现给用户的都是html页面,不论是纯静态还是伪静态,亦或者是动态生成.现如今的前端开发技术,不论是php.asp.jsp.vue.reac ...

  3. 网站页面静态化,一般是这样搞的

    网站页面静态化,一般是这样搞的 随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配 ...

  4. 网站页面静态化(二)thymeleaf生成

    今年是农历大年初三,在这里首先给各位朋友拜个年,祝大家新年快乐,虎年大吉大利,事业蒸蒸日上.过年无事,把页面静态化技术整理整理.本文将以thymeleaf为例子,说明在springboot当中,如何基 ...

  5. 【Java】页面静态化

    1.页面静态化介绍 2.Freemarker介绍 3.Freemarker入门案例 3.1环境搭建 创建maven工程并导入Freemarker的maven坐标 <dependency>& ...

  6. [Apache]网站页面静态化与Apache调优(图)

    ---------------------------------------------------------------------------------------------------- ...

  7. 动态页面静态化之页面静态化方案

    动态页面静态化之页面静态化方案 --------- 在大型网站中,访问者看到的页面基本上是静态页面.为什么都要把页面静态化呢? 把页面静态化,好处有很多.例如:访问速度快,更有利于搜索引擎收录等.目前 ...

  8. PHP如何实现HTML页面静态化

    前言: 随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化. 一般情况下会 ...

  9. jsp管理系统页面模板_页面静态化如何实现

    随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化. 一般情况下会从以下方 ...

最新文章

  1. 推荐一个生成后端模拟数据的懒人工具:lazy-mock
  2. CSS 多浏览器兼容又一方案
  3. Matlab | Matlab从入门到放弃(13)——基于Matlab的非线性函数的运算
  4. html5 canvas系列教程-像素操作(反色,黑白,亮度,复古,蒙版,透明)
  5. 【IDEA】idea 运行测试类报错 Failed to resolve org.junit.platform:junit-platform-launcher:1.5.2
  6. 小技巧 ----- 枚举整数的每一位数字
  7. 上传本地项目到githup(githup改版后将master改为main)
  8. 深度学习:文本检测数据集整理
  9. 计算机基础知识是几年级,[初中一年级]计算机基础知识ppt模版课件.ppt
  10. c++课程设计之通讯录电话簿管理设计
  11. 一个蹩脚的图形中文验证码自动识别实现
  12. 小号系统搭建接口教程
  13. 哈希取模余的基底为什么要选择素数?
  14. 读取.dwg文件“曲线救国”之读取.dxf
  15. java虚拟机的自动内存管理机制(二)
  16. 李永乐 线性代数 强化篇 第一章
  17. 如何取消windows10升级更新
  18. selenium自动化,更新到最新的chrome驱动
  19. python 生成html文件浏览器,pycharm中怎么生成HTML文档并在浏览器查看HTML文档
  20. 关于循环位移指令ROL,RCL ;逻辑右移指令 SHR , 算术右移指令 SAR

热门文章

  1. 实体店经营方案:烧烤店疯狂引流,营业额翻了8倍的秘诀!
  2. python画七色花代码_绘画七色花教案小班
  3. 干啥啥不行,吃饭第一名
  4. Android中获取天气,android中获取即刻天气
  5. 转载的关于AngularJs的总结
  6. 通达信dll接口怎么调用?
  7. 创建快捷方式(比如类注释,快捷语句.....)
  8. 获取 enum key 的方法
  9. flask ssti 的一些黑名单绕过姿势
  10. 哈工大计算机专业师资队伍,黄荷姣 - 教师名录 - 教师队伍 - 哈尔滨工业大学(深圳)...