页面静态化思想以及Django的定时任务

1.引入页面静态化:

类似于京东、天猫等商城的首页频繁被访问,为了提升访问速度,除了使用缓存技术外,还可以使用页面静态化技术。

页面静态化即将动态渲染生成的页面结果保存成html文件,放到静态文件服务器中。用户访问的时候访问的直接是处理好之后的html静态文件。

对于页面中属于每个用户展示不同数据内容的部分,可以在用户请求完静态化之后的页面后,在页面中向后端发送请求,获取属于用户的特殊的数据。

2.实现的思路:

  • 1.挖坑:前端html代码需要向后端查询数据的部分,先用模板语法填充。例如前端经常使用的’胡子语法’——{{ 变量 }},或者戏称挖坑。
  • 2.查询:后端从数据库查询前端具体需要的数据
  • 3.填坑:将从数据库里查询的数据填充到指定的模板里面,并存放到静态服务器,用户访问时便可以提升响应速度提升用户体验。

3.注意

在html页面中有可能用到Django的模板语法,也可能会用到前端Vue的模板语法,如果有些模板是Vue从js获取数据而非后端,可以通过在前端中修改Vue的模板变量语法来避免冲突

var vm = new Vue({
    el: '#app',
    delimiters: ['[[', ']]'],
    ...
})

通过delimiters声明,将Vue的模板变量变为了[[ ]]

4.定时任务执行静态化

对于首页的静态化,考虑到页面的数据可能由多名运营人员维护,并且经常变动,所以将其做成定时任务,即定时执行静态化。

在Django执行定时任务,可以通过django-crontab扩展来实现。

  • (1)安装
pip install django-crontab
  • (2) settings添加应用
INSTALLED_APPS = [
    ...
    'django_crontab',  # 定时任务
    ...
]
  • (3)设置任务的定时时间
    在配置文件中设置定时执行的时间

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

  • 任务时间
基本格式 :

* * * * *

分 时 日 月 周      命令

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

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

D:天(1-31)。

m: 月(1-12)。

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

  • 任务日志

首页的定时任务设置如下在settings中增加如下配置

# 定时任务
CRONJOBS = [
    # 每5分钟执行一次生成主页静态文件
    ('*/5 * * * *', 'contents.crons.generate_static_index_html', '>> /logs/crontab.log')
]
# 参数1:任务时间  参数2:任务方法  参数3:任务日志保存路径
  • 解决中文字符问题
  • 在定时任务中,如果出现非英文字符,会出现字符异常错误,可以通过在配置文件中添加定时任务执行的附加命令来实现
# 解决crontab中文问题
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'

5.开启定时任务

添加定时任务到系统中

python manage.py crontab add

显示已经激活的定时任务

python manage.py crontab show

移除定时任务

python manage.py crontab remove
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 提供了一种称为页面静态技术,可以将动态生成的页面转换为静态 HTML 文件,以提高网站的性能和响应速度。静态可以用于那些不经常变页面,比如主页、商品详情页等。 要实现 Django 页面静态,可以按照以下步骤进行: 1. 配置 Django 缓存:首先,打开项目的 `settings.py` 文件,配置缓存设置,以便将动态生成的页面缓存起来。你可以选择使用内存缓存(如 Memcached 或 Redis)或者数据库缓存。 2. 创建一个视图函数:在视图函数中,你需要编写生成动态页面的代码。确保这个视图函数包含了所有需要渲染的动态内容和数据。 3. 使用 Django 的缓存装饰器:使用 Django 的缓存装饰器对你的视图函数进行装饰,以便缓存生成的页面。 ```python from django.views.decorators.cache import cache_page @cache_page(60 * 15) # 缓存 15 分钟 def my_view(request): # 动态生成页面的代码 return render(request, 'my_template.html', context) ``` 4. 配置 URL 映射:将你的视图函数与一个 URL 映射关联起来,这样访问该 URL 时就会触发相应的视图函数。 5. 运行 Django 服务:启动 Django 服务,然后通过访问配置的 URL 来生成并缓存静态页面。 当第一个用户访问经过缓存装饰的视图函数时,Django 会生成页面并将其缓存在缓存中。接下来的用户访问相同的页面时,Django 将直接从缓存中提取页面,而不是重新生成。 需要注意的是,如果你的网站包含有个性内容或需要频繁更新的内容,那么静态可能不太适合。在这种情况下,你可以使用缓存来提高性能,但还是需要动态生成页面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值