我将 web2py 从 2.3.2 升级到 2.14.6。然后进行所有必需的更改,例如更新/替换web2py.js
, jquery.js
, web2py_ajax.html
, appadmin.py
, appadmin.html
. 然后进行了一些 CSS 更改以匹配旧 UI。后端代码没有变化。
现在,当我SQLFORM.grid()
在 web2py 2.14.6 上访问包含 web2py grid ( ) 的应用程序页面时,需要34.775 秒,而在 2.3.2 版本的相同页面上,相同数量的记录需要0.686 秒。Grid 有大约 4600 条记录。没有网格的页面在两个版本上加载大约需要相同的时间。
我做了时间分析,发现这gluon/html.py
需要大部分时间。
时间分析结果
2.3.2:https ://paste.ubuntu.com/23602259/
2.14.6:https ://paste.ubuntu.com/23602261/
我还在网格定义前后添加了打印语句,在 2.14.6 上花了 18 秒,在 2.3.2 上花了 10毫秒。
SQLFORM.grid()
定义类似于以下:
grid = SQLFORM.grid(query,
create=True,
csv=False, deletable=False, searchable=search_query,
showbuttontext=False, links=links, links_placement='left',
maxtextlengths=textlengths, upload=URL('download'),
fields=[db.notice.UIN, db.notice.classname, db.notice.title,
db.notice.type,
db.notice.description,
db.notice.due_date, db.notice.status,
db.notice.risk, db.notice.consequence,
db.notice.document,
db.notice.other])
上面网格中的示例查询-
((((user_notice.notice = notice.id) AND (user_notice.auth_user = 19)) AND
(notice.status IN ('Closed','Open','New'))) AND
(notice.due_date IS NOT NULL))
我在本地计算机上对此进行了测试——Ubuntu 14.04、Python 2.7.6 和 mysql db。
为什么新版本需要更多时间来加载网格?升级后是否需要对应用程序代码进行任何更改?
请帮我解决这个问题。
谢谢