电商秒杀-页面静态化
Posted 法式小奶包
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电商秒杀-页面静态化相关的知识,希望对你有一定的参考价值。
秒杀可能用到的方案
nginx、gateway限流
Redis做库存加减:incrby stock -1
MQ削峰:异步生成订单等
除了以上方案,还可以商品详情页静态化,然后Nginx转发。
Nginx指向本地静态页面,如果本地没找到,才进行反向代理
适合商品修改频率不高的情况,每次修改商品信息都要重新生成。
代码示例
1.增加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.配置html保存目录
static:
html:
path: D:\data\nginx-1.19.1\html
3.接口
public interface HtmlService {
void create(String fileName);
void delete(String fileName);
}
4.实现接口
@Autowired
private TemplateEngine templateEngine;
@Value("${static.html.path}")
private String path;
@Override
public void create(String fileName) {
// 上下文,import org.thymeleaf.context.Context;
Context context = new Context();
//设置变量
context.setVariables(getUserInfo(fileName));
File dest = new File(path, fileName + ".html");
if (dest.exists()) {
dest.delete();
}
try (PrintWriter writer = new PrintWriter(dest, "UTF-8")) {
// "user_info"是templates目录下的html名称
templateEngine.process("user_info", context, writer);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void delete(String fileName) {
File dest = new File(path, fileName + ".html");
if (dest.exists()) {
dest.delete();
}
}
5.测试接口
@Autowired
private HtmlService service;
@Test
public void htmlTest() {
var fileName="user_info";
//service.delete(fileName);
service.create(fileName);
}
运行结果
以上是关于电商秒杀-页面静态化的主要内容,如果未能解决你的问题,请参考以下文章