内存里的模板缓存在每次重启后都是空的,第一批请求要把用到的模板重新编译一遍。能不能把编译结果存到磁盘?效果多大?什么时候失效?这篇用 300 个模板和真实的 gunicorn 重启来量。
第一个模板 5.80 ms;300 个模板共 1501.6 ms 第一个模板 5.77 ms;300 个模板共 1467.2 ms 第一个模板 5.82 ms;300 个模板共 1496.9 ms
上一篇:模板缓存;下一篇:模板中执行函数的性能问题。
第一次(缓存目录是空的,编译并写入):第一个 6.14 ms;300 个共 1540.5 ms 缓存目录里生成了 300 个文件;示例文件名:__jinja2_01032688d7e35f30a38dfd7ac28e73b9ba3d38c4.cache;单个大小约 10181 字节;总计 2984 KiB 之后的新进程(读缓存):第一个 0.21 ms;300 个共 39.7 ms 之后的新进程(读缓存):第一个 0.21 ms;300 个共 39.5 ms 之后的新进程(读缓存):第一个 0.20 ms;300 个共 39.5 ms 300 个模板:无缓存中位数 1496.9 ms → 读缓存中位数 39.5 ms,快 37.9 倍
修改 page0.html 后加载 page0 与 page1:缓存目录里被重写的文件数 = 1(只有被修改的 page0)
Flask 渲染一个模板后缓存目录里的文件: ['__jinja2_01032688d7e35f30a38df']
无缓存 新启动的服务器上,头 60 个不同页面的请求共 337 ms 有磁盘缓存(首次启动,写入) 新启动的服务器上,头 60 个不同页面的请求共 367 ms 有磁盘缓存(再次启动,读取) 新启动的服务器上,头 60 个不同页面的请求共 49 ms