网站首页 > 技术教程 正文
1 SpringBoot Thymeleaf模板
原理:服务端渲染、模板变量替换。与 Spring Boot,MVC方言完美结合。
优势
- 传统J2E使用JSP方式开发,但 Spring Boot对JSP支持不好。JSP规范与Servlet规范紧密耦合,使用JSP需要唤起servlet进程。
- Thymeleaf支持HTML原型,可静态使用。
劣势
- 传统模板页面基于服务端,需要唤起servlet容器,走springmvc全套流程。
- 模板渲染IO操作
- 较难缓存。用户请求在访问到springboot server时,还会经过nginx,如果使用模板渲染,很难在nignx上做缓存。
2 动静请求分离
动静分离的设计原理:区分动静态请求。
- 动态请求:每次都从服务端获取数据请求。
- 静态请求:不必每次从服务端获取的页面展示请求。
优势
- 架构分离:分层优化
- 缓存策略分离:例如前端做nginx、浏览器、cdn等缓存。
- 研发框架分离:提高研发效率。
静态资源服务器,例如nignx;动态请求服务器,例如Tomcat;前后端采用Ajax等前端异步化交互技术发起请求,获取数据,填充静态页面。
实现技术
Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
Nginx可以用作动态请求反向代理,也可以用作静态请求使用html resources。
3 静态请求缓存效率化
主要是CDN分发技术和Nginx proxy cache文件缓存。
CDN是内容分发网络,具有高性能、高可用、高扩展性的优点。
- CDN是带有缓存性质的网络节点。即CDN是web服务器,提供了静态资源缓存机制。
- 分发能力,请求分发到最近的节点。
- 具有负载均衡能力,没有单点问题。
- 需要专门运营维护CDN网络。
未使用CDN技术
使用CDN技术缓存静态资源。
客户端发起请求到DNS,查询ip地址,根据CNAME返回CDN管控节点域名,实现DNS解析权移交。管控节点根据请求ip地址分发到最近的CDN节点(负载均衡与分发)。如果在CDN节点命中缓存,直接返回,否则请求静态资源并备份。
运营厂商CDN实现原理中,HTTP 缓存头起到了重要作用。
Http缓存头 cache-ctrol
private:客户端可以缓存.
public:客户端和代理服务器都可以缓存。
max-age=xxx:缓存的内容将在XXX秒后失效。
no- cache:强制向服务端再验证一次,判断是否生效。
no-store:不缓存请求的任何返回内容。
有效性判断(验证时带上如下参数)
ETag:资源唯一标识
If-None-Match:客户端发送的匹配Etag标识符
Last- modified:资源最后被修改的时间
If- Modified- Since:客户端发送的匹配资源最后修改时间的标识符
4 动态请求缓存
4.1 动态请求前置缓存
前置缓存的使用,提高查询速度,减少数据库访问量。
- Redis集中式缓存
- 本地缓存:Tomcat缓存
包括主动失效、被动失效,需要解决缓存击穿、降级等问题。
4.2 使用Nginx proxy cache
Nginx Lua脚本编程定制化:
在nginx生命周期中,Lua通过协程机制在某些环节实现钩子机制。例如master进程创建worker进程时,运行初始化脚本;检测到某个url请求时,直接调用Redis返回response,从而省掉springboot webmvc流程。
Nginx proxy cache使用较少,因为再快的文件读写速度也比不上内存的读写速度。
4.3 Nginx shared dic 本地缓存
原理:nginx服务器的内存缓存,所有worker进程共享,通过lua操作。
lua脚本
获取缓存空间,从中获取list缓存。如果为空则转发请求,获取响应数据并缓存。
5 全页面静态化技术
原理:服务端通过类似爬虫的技术直接完成动态请求加载完成后的静态页面,将HTML、CSS、JS资源全部加载完后的页面生成后部署到CDN上。
我们访问页面,发起静态请求从CDN中获取html资源文件,发起动态请求访问nginx、tomcat获取响应数据,然后在客户端渲染页面。需要三步操作。
如果将渲染好的页面直接放到CDN上,则客户端可以直接获取。
优势:无需加载、无需动态请求、可全部CDN化
实现:
- 类似爬虫的技术
- 无头浏览器:类似浏览器,加载HTML文件,运行JavaScript,执行Ajax请求,获取数据,填充到DOM,输出静态资源文件。
HtmlUnit
Httpclient无法搞定动态请求,HtmlUnit可用于爬虫,测试自动化工具等
HtmlUnit是一个无界面浏览器Java程序。为HTML文档建模,提供了调用页面、填写表单、单击链接等操作的APl。提供了对 Javascript的支持,甚至可以使用相当复杂的Ajax库,根据配置的不同模拟 Chrome、 Firefox等浏览器。
上图.test.html书写错误
来源:https://www.cnblogs.com/dtyy/p/15531799.html
猜你喜欢
- 2024-10-12 Vue初学习之Nginx 部署(vue cli nginx)
- 2024-10-12 高并发开发,第五章【openresty】,商品详情的页面静态化
- 2024-10-12 Freemark页面静态化(freemarker静态化页面)
- 2024-10-12 docker随手笔记第十二节 jenkins+docker+nginx+纯静态页面配置
- 2024-09-22 静态图片网站自动转Jpg,Png图像为Webp
- 2024-09-22 静态网站生成工具-hugo(静态网站生成工具)
- 2024-09-22 Nginx部署Vue项目以及解决刷新页面404
- 2024-09-22 centons7下安装nginx,让你拥有自己的网站,包含下载地址
- 2024-09-22 强烈推荐一个非常好的 NGINX WEB UI 可视化用户界面
- 2024-09-22 如何正确地设置 WordPress 伪静态规则
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)