Flask项目:仅在特定模板加载JS库能否优化加载速度?
回答
肯定能提升非users.html页面的加载速度,对users.html本身则不会有负面影响
对非
users页面的直接收益:
把jQuery和Datatables从全局的base.html移走后,index.html和其他所有不依赖这两个库的页面,就不用再加载这两个体积不小的资源了——这会减少HTTP请求数量,降低页面的初始加载重量,尤其是用户首次访问(无缓存)时,加载速度的提升会很明显。对
users.html的注意事项:
这个页面依然能正常使用Datatables,但要保证加载顺序正确:先加载jQuery,再加载Datatables(因为Datatables完全依赖jQuery)。在Flask模板里可以通过扩展base.html的脚本块来实现,既不会破坏全局模板结构,又能按需加载。
举个简单的模板实现例子:base.html里预留脚本块:
{% block scripts %} <!-- 这里放所有页面都需要的通用JS --> {% endblock %}
users.html里扩展并添加依赖:
{% extends "base.html" %} {% block scripts %} {{ super() }} <!-- 继承base里的通用脚本 --> <!-- 先加载jQuery --> <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <!-- 再加载Datatables的JS和CSS --> <script src="https://cdn.datatables.net/1.13.7/js/jquery.dataTables.min.js"></script> <link rel="stylesheet" href="https://cdn.datatables.net/1.13.7/css/jquery.dataTables.min.css"> {% endblock %}
额外提醒:
- 浏览器缓存会让
users.html的重复访问体验不受影响,用户第一次访问users.html加载过这两个资源后,后续访问会直接用缓存。 - 可以用浏览器开发者工具的Network面板,分别对比两种方案下非
users页面的加载时间,直观看到性能变化。
内容的提问来源于stack exchange,提问作者JeffP
相关产品推荐
相关产品推荐

