大型网站页面静态化方案

为什么要静态化
  • 提高访问性能
  • SEO优化友好
方案一:网页HTML化

  • 管理后台调用新闻服务创建文章成功后,发送消息到消息队列
  • 静态服务监听消息,把文章静态化,即生成html文件
  • 在静态服务器上面安装一个文件同步工具,此工具的功能可以做到只同步有变动的文件,做增量同步,rsync和inotifywait
  • 通过同步工具把html文件同步到所有的web服务器

缺点

  • 页面无法修改

  • 页面同步实时性不好,多台服务器不一定同时同步,负载均衡下刷新页面可能有是有内容有时又没有了

  • html文件太多,无法维护

  • 同步工具不稳定

方案二:伪静态化

  • 管理后台调用新闻服务创建文章成功后,发送消息到消息队列

  • 缓存服务监听消息,把文章内容缓存到缓存服务器上面

  • 用户发起请求,web服务器根据id,直接查询缓存服务器

  • 获取数据返回给用户

缺点

  • 缓存压力大

  • 缓存维护难度大

方案三:布局样式模板化

  • 分发层做负载均衡,利用hash一致性进行分发

  • 应用层利用openresty+lua,使用html模板和nginx级的缓存

  • 缓存层:jvm缓存+redis分布式缓存