我将web2py从2.3.2升级到2.14.6。然后进行了所有必需的更改,例如更新/替换web2py.js
,jquery.js
,web2py_ajax.html
,appadmin.py
,appadmin.html
。然后进行了一些css更改以匹配旧UI。后端代码没有变化。
现在,当我在web2py 2.14.6上访问包含web2py网格(SQLFORM.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/
此外,我在网格定义之前和之后添加了print语句,在2.3.2上花了18秒2.14.6和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。
为什么较新的版本需要更多时间来加载网格?升级后应用程序代码是否需要进行任何更改?
请帮我解决这个问题。
谢谢