为什么要使用页面静态化
- 因为商品详情页的数据太多,需要后台大量查询数据,渲染到HTML页面,造成数据库压力。
怎么解决?
- Redis,适合数据较小的,如果每个页面10kb, 100万个商品,就是10GB空间,占用内存大。
什么是页面静态化?
- 把动态生成的HTML变为静态的内容保存,以后用户请求到来,直接访问静态页面,不用经过服务的渲染。
- 静态的HTML部署在nginx中,大大提高并发能力,减小tomcat压力。
如何实现静态化?
- 通过模板引擎生成,保存到nginx服务器来部署。
- Thymeleaf把渲染结果写入Response,也可以写到本地文件,从而实现静态化。
具体如何实现?
- 请求商品页面,除了返回页面视图外,还应异步创建一个静态页面。
- 修改nginx,让它对商品请求进行监听,指向本地静态页面,如果本地没找到,才进行反向代理:
@Service
public class GoodsHtmlService {
@Autowired
private GoodsService goodsService;
@Autowired
private TemplateEngine templateEngine;
private static final Logger LOGGER = LoggerFactory.getLogger(GoodsHtmlService.