| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> Python知识库 -> Tornado框架的模板热更新问题(实现html热更新) -> 正文阅读 |
|
|
[Python知识库]Tornado框架的模板热更新问题(实现html热更新) |
????????长期以来,tornado框架的使用者多数是做的前后端分离,完全没有html模板热更新的需要。但是如果遇到条件限制,只能单机运行且单机性能不佳的情况下,就被迫不能做前后端分离了。
? ? ? ? 一般情况下,我们在tornado框架的web程序中修改完了html文件后(内容修改),需要重启web程序来让修改生效。这样是十分低效且繁琐的,特别是生产环境需要临时变更,业务重启的那几秒都可能造成不小的损失,给用户带来不好的体验。 ? ? ? ? 于是,我翻阅了tornado官方文档中,和模板系统相关的文档。文档中对于tornado的模板系统的加载器是这样描述的
如图所示,加载器会在模板首次加载后进行缓存,这样做可以提高性能和响应速度。 ????????既然是叫“缓存”那么就一定会有办法可以刷新或者清空这个缓存,这下事情就好办了,继续阅读文档就可以发现reset()方法
????????文档中的描述就是使用reset()可以重置缓存,之后我去?tornado.web.RequestHandler这个类(也就是我们使用过程中继承的类)里面查找reset()用法,发现了意外的东西。
????????如图所示,?RequestHandler类的execute方法内使用了reset(),但是我并不打算去研究这个execute方法是如何触发的,图中红框可以看到,它直接对RequestHandler类下的模板加载器进行了操作,取出的loader(加载器)中可以调用到reset方法。 ? ? ? ? 而我们使用tornado框架编写响应类时,也会继承RequestHandler类,于是乎,我们在自己的t代码中应该也可以直接调用到reset(),我们不妨尝试一下
????????在您的get或post方法内添加以上get方法内代码后启动程序,查看页面,在不关闭web程序的情况下修改html文件并保存,再次查看页面。不出意外的话您会和我一样,看到页面上发生了变化。 ? ? ? ? 通过简单的测试,我们发现这个方法是可行的,那么我们接下来需要做的就是根据具体业务需求和场景,设置不同的热更条件,我这里基于Redis实现了一个简单的文件修改后热更新逻辑,在普通业务量的系统中应该是够用的了。
? ? ? ? 上面的代码较为基础,实际使用过程中还请根据自己的实际业务需求进行修改. ? ? ? ? 文章如有遗漏或错误的地方还望指正,最后,希望各位可以给我点一点大拇指并关注。 |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/30 5:57:46- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |