Loading... # 前言 好久没有稍微大一点的私单做了,这次客户是想~~优化~~(重构)一个奇慢无比的传奇装备查询系统,并增加一些新功能。 拿到服务器权限后我分析了一下,系统是dedecms做的,装备信息全存在文章表里边,也就是每一个装备在dedecms这边都是以文章的形式存在,主要问题还是出在了搜索功能上边,非常非常的慢,当时寻思虽然也就900条装备数据也不至于这么慢吧。 后边慢慢翻源码,分页做了但是设置查询1000条数据(!),前端模板也没做分页相关的东西,后边了解老板是想将所有的装备信息都列出来,约等于没有做分页。 # 数据导出 导出数据倒是不用花多少心思,主要内容就在三个表上边,一个分类表和两个文章表。主要是在整理数据上花了些心思,将里边的地图数据给分离出来方便后期做管理和优化。虽然并不了解传奇里边各大陆都有什么(也许每个版本都不一样),我想之后也许可以做成Tree结构来存储。有一说一Python在处理数据去重和替换真方便。 # 数据存储设计 装备查询系统主要分为以下三个表:装备分类、地图、装备信息,装备信息需要关联分类以及地图,装备与地图是一对多,与分类是一对一。为了之后方便维护和避免些不必要的性能损失,不会做真实外键关系。 当然还有个热门搜索,要做一个用来存储用户搜索记录的表,来实现自动热门搜索关键词的功能。 # 技术选型 最后选择了使用ThinkPHP8+Vue3的前后端分离方案,至于为啥选择ThinkPHP主要还是熟悉,以及开发起来不需要那么多时间,改起来也方便不需要编译,之前实习的时候也是用的它,虽然后端接口用的更多的是Laravel,后台才是ThinkPHP。 Vue的优势就不用说了,因为这个项目没有什么特别的UI需求,用户前台很多东西都是手搓实现的,没有使用UI组件库之类的东西,依赖非常的干净,就只有Vue3和Axios。后台管理前端就复杂了,非常多的东西,ElementPlus、FontAwesome、i18n、Router、Pinia之类的。 # 成果 碍于是商业项目就不具体讲细节了,也不会开源,直接上成果吧。虽然性能上边还是和预期上差了些,ThinkPHP8的性能没有达到我的预期,部署在客户的服务器上平均响应时长在300ms以上,尽管前端渲染得非常快。后边我还得学习下workerman以及swoole,来提升性能。非内存常驻还是有些致命的。 ![前台查询界面](https://dracowyn.com/usr/uploads/2024/04/3193795285.png) ![后台管理界面](https://dracowyn.com/usr/uploads/2024/04/702381438.png) ![后台添加装备](https://dracowyn.com/usr/uploads/2024/04/202569593.png) 案例地址:[极品装备 (1yn.com)](https://ziliao.1yn.com/index.html) Last modification:April 10, 2024 © Reprint prohibited Support Appreciate the author AliPayWeChat Like If you think my article is useful to you, please feel free to appreciate