zoukankan      html  css  js  c++  java
  • Django框架开发web网站的网页优化—页面静态化


    网站优化-页面静态化

    1)概念

      提前将页面所用到的数据从数据库查询出来,然后生成一个静态页面,之后用户来访问的时候,直接返回静态页面。

      举例:首页静态化:获取首页用到的数据表中的数据,生成静态首页index.html.1分钟有1000个用户访问了网站首页,直接返回静态index.html。

    2)页面静态化步骤

    a)模板:使用一个模板将页面用到的数据展示的代码写好。

    b)在进行页面静态化的时候,从数据库中查出页面所需的数据,然后直接使用模板进行模板渲染,获取渲染之后的静态内容。

    c)将静态内容保存成静态文件。

    3)静态页面的数据和数据表中数据同步(静态页面的更新)

    a)定时任务:将生成静态文件的方法添加到操作系统的定时任务中,然后由操作系统每隔一段时间调用一次对应的代码。对于一些更新速度比较快的页面,采用定时任务。(在Django执行定时任务,可以通过django-crontab扩展来实现。)

    b) 每当管理员通过Admin界面修改页面对应数据表中的数据时,重新执行生成静态页面的方法,让静态页面和数据库中数据保持同步。对于其他一些更新速度不是很快的页面,采用第二种方法。

    例1:首页静态化

    将首页采用页面静态化技术生成静态页面,用户来访问时直接返回静态页面。

    首页数据更新比较频繁,所以首页静态页面和数据表数据同步时,可以采用定时任务。
    例2:商品详情页面静态化

    将数据表中的每个商品生成一个对应的静态详情页面,当用户访问某个商品时,直接返回对应商品的静态详情页面。

    使用celery定义任务函数。

    补充:

    1)使用模板详细步骤:

    from django. template import loader

    1.加载模板(指定所要使用的模板)

    temp = loader .get_ template( '模板文件路径’)

    # 2.模板渲染(将模板文件中的变量进行替换,返回替换后的html内容)res_ html = temp . render (context= '传递给模板文件的数据字典‘)

    知识点:定时任务

    安装
    pip install django-crontab
    在项目配置文件中添加应用
    INSTALLED_APPS = [
    ...
    'django_crontab', # 定时任务
    ...
    ]

    在项目配置文件中设置任务的定时时间
    在配置文件中设置定时执行的时间

    每个定时任务分为三部分定义:

    任务时间

    基本格式 :

    * * * * *

    分 时 日 月 周 命令

    M: 分钟(0-59)。每分钟用*或者 */1表示

    H:小时(0-23)。(0表示0点)

    D:天(1-31)。

    m: 月(1-12)。

    d: 一星期内的天(0~6,0为星期天)。
    任务方法

    任务日志

    首页的定时任务设置如下

    # 定时任务
    CRONJOBS = [
    # 每5分钟执行一次生成主页静态文件
    ('*/5 * * * *', 'contents.crons.generate_static_index_html', '>> /Users/smart/Desktop/meiduo_mall/logs/crontab.log')

    解决中文字符问题

    在定时任务中,如果出现非英文字符,会出现字符异常错误

    可以通过在项目配置文件中添加定时任务执行的附加命令来实现

    # 解决crontab中文问题
    CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'    (同时在生成静态文件的任务函数中也要修改写入文件的编码 例:with open(save_path,'w',encoding='utf-8') as f:  .....)

    开启定时任务:

    python manage.py  crontab add

    显示已激活的定时任务:

    python manage.py crontab show

    移除定时任务:

    python manage.py crontab remove
  • 相关阅读:
    [LeetCode] Permutations II
    [LeetCode] Remove Duplicates from Sorted Array II
    [LeetCode] Permutations
    [LeetCode] Path Sum II
    [LeetCode] Plus One
    [LeetCode] Path Sum
    [LeetCode] Permutation Sequence
    [LeetCode] Pow(x, n)
    [LeetCode] Remove Duplicates from Sorted Array
    [LeetCode] Remove Element
  • 原文地址:https://www.cnblogs.com/168vincent/p/9641862.html
Copyright © 2011-2022 走看看