页面静态化
静态化的问题,在熟悉了Nginx、Vamish、squid、CDN等前端服务器,结合当前主流技术发现,对于springmvc就是为spring servlet拦截增加一个.html扩展名即可。
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>*.html</url-pattern><!--处理静态化à
</servlet-mapping>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>*.action</url-pattern><!--处理动态请求à
</servlet-mapping>
这里需要解释一下。从原理上来讲,对于web服务器,你无论提交给它什么请求,他返回的都是hmtl文档:
因此,对于”a.html”请求来讲,你是真正的html文档也好,是servlet也好,对于访问者来讲都是一样的,因为返回的都是html文档。唯一区别是,原生态的html文档不需要servlet特别处理,会减轻服务器负担。但在当前的技术条件下,这已经不重要了,因为web服务器前端还有缓存服务器、反向代理服务器等。
对于前端服务器来讲,这个时候,访问”a.html”具体是不是原始的html文档已经不重要了,这也是该缓存方案的由来,方案的原理就是对于扩展名为.html的请求,前端高速缓存或nginx会为其缓存静态页面,从而实现静态化。这也是目前淘宝、京东等主流电商网站采用的技术。即简单又实用。
对于静态化请求来讲,生成静态化页面有两种方式,第一种就是第一次访问时,前端缓存服务器会为请求生成静态化页面并放在缓存区。第二种需要我们写一个小程序去主动刷新静态化的请求。此时,需要记下那些是静态化的请求,然后使用java里的httpclient去调用即可。
最后,其实对于前端服务器来讲”a.html”可以缓存,”a.action”、”a.do”等都是可以缓存的,这里只是为了取得概念上的一直,实际情况是,为了避免和原html文件冲突,最好采用.htm或shtml等扩展名。最主要的是要区分可静态化请求和动态化请求,并采用不同的方式来处理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?