电商秒杀-页面静态化

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);
}

运行结果



以上是关于电商秒杀-页面静态化的主要内容,如果未能解决你的问题,请参考以下文章

电商网站秒杀与抢购的系统架构

Web系统大规模并发——电商秒杀与抢购

电商面试问题

你真的了解大型电商网站的页面静态化吗?

商城秒杀活动要点

大型电商网站的页面静态化方案是如何支撑亿级流量的?