django页面静态化处理,详细步骤

您所在的位置:网站首页 redis页面静态化 django页面静态化处理,详细步骤

django页面静态化处理,详细步骤

2024-01-30 14:16| 来源: 网络整理| 查看: 265

优化优化优化,优化的方法有好多,一般都会根据实际的需求去选择,今天就和大家分享一下django其中一种优化方案,静态化页面处理!!!

首先我们要知道什么是静态化页面处理 图片等静态文件想必我们是清楚滴把,都放在了项目的static目录下,而静态化页面处理就是把html在后台提前渲染好,什么文本啊,图片啊,url链接啊都提前渲染成型,然后存入一个html文件当中,由服务器直接返回这个html静态文件而不需要再去做数据库查询等操作了。 我这里给大家分享一下首页的静态化页面处理案例,我的策略是,所有用户在未登录之前看到的页面都是一样的,而且一般首页的访问量都比较大,所以首页做静态化页面处理也非常合适

开始 先改一下我们的模板文件中的base页,因为用户第一次访问肯定都是未登录状态,而我的案例中,base页是区分了登录和未登录的判定的,所以我做了如下改动:

在这里插入图片描述 我分别复制了base,rside,index rside是从base中抽离出来的,include进了base,所以改动rside就相当于改动了base,在static_rside中的,取消了登录状态判定,一律改为登录和注册

登录;;|; 注册

登录后即可点击头像进入用户中心

然后修改static_index中的继承

{% extends 'base/static_base.html' %}

ok,第一步就完成了

第二步,我们需要用到celery,在celery那里添加个任务

@app.task def static_index(): goods = Goods.objects.filter(goods_status=constants.GOODS_STATUS_SELL, is_valid=True)[:3] top_art = Article.objects.filter(is_top=True).first() art = Article.objects.filter(status=constants.ARTICLE_STATUS_PASS, is_valid=True, is_best=True) slider = Slider.objects.all() context = { 'art': art, 'goods': goods, 'slider': slider, 'top_art': top_art, } temp = loader.get_template('static_index.html') #加载静态html文件 static_index_html = temp.render(context) #用render方法将数据渲染到html文件中 print(static_index_html) save_path = os.path.join(settings.BASE_DIR,'static/index.html') #设置储存地址 with open(save_path,'w',encoding='utf-8') as f: #将渲染好的html文件放入专门存静态的static目录下 f.write(static_index_html)

这就是我index视图中查询的数据,我直接拿到了任务中来,激活任务就可以生成静态首页的html了

但是这个任务在哪里调用呢? 你在哪里修改了数据就在哪里调用,我用的是xadmin作为管理者后台 于是乎,走起,我们去重写xadmin的方法

from CeleryTask.tasks import static_index def save_models(self): static_index.delay() #调用celey任务的方法 obj = self.new_obj obj.save() def delete_models(self): static_index.delay() #调用celey任务的方法 obj = self.new_obj obj.save()

这个意思就是,xadmin后台中使用保存删除等修改操作的时候,就会重新生成静态页面,使我们的静态页面也保持一定的更新频率

静态页面的生成这一块已经处理好了,那么怎么访问呢,你的项目部署后,打开你的nginx文件的配置,也就是nginx.conf文件,在nginx的server下再指定一个路径 在这里插入图片描述 就是location = /static/ 这一块,当你访问你的类似于 域名:80/static/… 等这样的地址时,就会返回你的静态页面,当然,这个路径你可以按照你的要求修改,例如/index/ 让用户一进来就访问你的静态页面,我这只是案例,就没这么做了

静态页面有个好处就是防止DDOS攻击,一个人估计对你的网站同时发起成千上万次访问,你的服务器就要在数据库里究极频繁的查询,分分钟就挂了,而使用了静态页面,随你怎么访问,没事,我nginx别的本事没有,就返回一下静态文件这块,那效率是贼牛逼的

如果文中有不懂的地方,可以看下一我的其他博客,关于这里面提到的知识都有讲解



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3