继续改进和优化《IT资产管理系统》,使用Redis缓存
一,系统采用Redis作为缓存数据库,提升系统的运行效率,减少后台mysql数据库的负担。
def get_site_list(request):
r = redis.StrictRedis(host='127.0.0.1', port=6379, decode_responses=True)
# 判断是否在redis server中存在 hash 'sitedict' 如果存在就读取出来
if r.hlen(name='sitedict'):
hsitedict = r.hgetall(name='sitedict')
##从redis读出hash 'sitedict', 通过for 循环,把结果转换成[{id: 'idxx',sitename: 'sitenamexxx'},{ }.....]格式
hsitelist = []
for i in hsitedict:
hsitelist.append({'id': i, 'sitename': hsitedict[i]})
# 判断是否在redis server中存在 hash 'hosttype' 如果存在就读取出来
if r.hlen(name='hosttype'):
hhosttypedict =r.hgetall(name='hosttype')
hhosttypelist=[]
for i in hhosttypedict:
hhosttypelist.append({'id':i,'htname':hhosttypedict[i]})
# 如果redis server中不存在 hash 'sitedict' ,
if request.user.adm_info.system_adm:
sites=hsitelist
#sites=site.objects.all().values('id','sitename').order_by('id')
else:
user_id=request.session.get('current_user_id')
sites=adm_site.objects.filter(User_id=user_id).values('site_id').annotate(id=F('site__id'),sitename=F('site__sitename')).order_by('id')
mylist=[sites,hhosttypelist]
ret = list(mylist)
result = json.dumps(ret)
print(result)
return HttpResponse(result, "application/json")
二、继续优化数据库表,目前系统相关的表有23个,随着优化和功能的增加,数据库表还会增加
三、优化数据查询,所有查询都使用AJAX异步从后台拉取数据,减少前端的刷新,包括前端菜单也是用AJAX动态生成。
<script>
$(document).ready(function(){
$.ajax({
url:"/deviceman/get_site_list",
type:"get",
datatype:"json",
success:function(result){
for(var i = 0; i<result[0].length; i++){
var site = result[0][i];
$("#sitelist").append(" <li> <a href=# onclick=swsite("+site.id+");>"+site.id+":"+site.sitename+"</a></li>")
};
for(var j = 0; j<result[1].length; j++){
var hosttype = result[1][j];
$("#hosttypelist").append("<li><a href=/deviceman/display_pc/"+hosttype.id+"/ >"+hosttype.htname+"</a></li>");
}
}
});
});
function swsite(id){
$.ajax({
url:"/deviceman/switchsite",
data:{id:id},
type:"get",
datatype:"json",
success:function(result){
alert('Switching the site code to '+result.sitename);
window.location.reload();
}
});
}
</script>
四、增加了硬件、软件资产的基础数据维护功能,让每一个管理员都可以录入依赖的数据,比如硬件资产的分类、型号、配置。软件资产的分类,软件的名称, 。