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
Django框架开发web网站的网页优化—页面静态化的更多相关文章
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(二)
一:页面静态化 几个概念: 静态网址:(比如:http://localhost/abc.html) 特点:1.利用seo(search engine optimization) 搜索引擎优化;2:访问 ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)
一:关键技术介绍: 衡量是否为大型网站的要素: A:PV值(page views 页面浏览量) 访问量大: 带来的问题:1:流量大 -->解决方案:增加带宽,优化程序(视频和图片较浪费带宽,尽量 ...
- php动态网页实现页面静态化 通过在初次被访问时生成html文件保存起来,下次该PHP程序被访问时就直接找到以前被访问过的html页面
一.什么是静态页面?什么是动态页面 静态页面是网页的代码都在页面中,不需要执行asp,php,jsp,.net等程序生成客户端网页代码的网页.不能 静态页面 动态页面 区别: ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)
页面静态化的技术实现有两种方式 使用PHP自己的缓存机制 先说明一下OB缓存的机制. ob1.php 代码:说明的ob的各个用法->项目中 ☞ 如何打开ob缓存 ① 配置php.ini ...
- SSM框架开发web项目系列(三) MyBatis之resultMap及关联映射
前言 在上篇MyBatis基础篇中我们独立使用MyBatis构建了一个简单的数据库访问程序,可以实现单表的基本增删改查等操作,通过该实例我们可以初步了解MyBatis操作数据库需要的一些组成部分(配置 ...
- SSM框架开发web项目系列(二) MyBatis真正的力量
前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBa ...
- SSM框架开发web项目系列(五) Spring集成MyBatis
前言 在前面的MyBatis部分内容中,我们已经可以独立的基于MyBatis构建一个数据库访问层应用,但是在实际的项目开发中,我们的程序不会这么简单,层次也更加复杂,除了这里说到的持久层,还有业务逻辑 ...
- 基于django快速开发一个网站(一)
基于django快速开发一个网站(一) * 创建虚拟环境.基于虚拟环境创建django==2.0.0和图片加载库和mysql数据库驱动 1. 创建目录并创建虚拟环境 ╰$ mkdir Cornuco ...
- [转]Asp.net mvc 网站之速度优化 -- 页面缓存
网站速度优化的一般方法 由于网站最重要的用户体验就是速度,特别是对于电子商务网站而言. 一般网站速度优化会涉及到几个方面: 1. 数据库优化 — 查询字段简历索引,使用数据库连接池和持久化,现在还有种 ...
随机推荐
- Core Animation1-简介
一.Core Animation简介 * Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代 ...
- iOS获取图片格式
我们系统使用的一般文件格式有png.jpg.jpeg.GIF.TIFF 等格式: 图片是我们开发过程中最常见的东西,一般每个公司都会有自己的文件服务器,客户端人员都会从文件服务器中获取相关的图片信息: ...
- WCF Restful Post调用
一.首先建立Http的服务端,此示例的寄宿体为WindowsService,以下代码仅为WCF Restful服务代码,不包括服务启动和安装代码 1.服务契约 /// <summary> ...
- c# Dictionary字典类如何使用
Dictionary<string, string> openWith = new Dictionary<string, string>(); //添加元素 openWith. ...
- PHP面向对象——三大基本特性与五大基本原则
三大特性是:封装.继承.多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 封装是面向对象的特征之一,是对象和类概念的主要特 ...
- 1.Python3关于文件的操作
1.写了一个简单的Demo,就是向txt文本写入内容,最初代码如下: file = open("D:/Users/nancy/python.txt","wb") ...
- Linux make menuconfig报错 Your display is too small to run Menuconfig!
在没有全屏的状态下执行 make menuconfig,如果报下面的错误,表示终端的窗口太小,需要放大窗口或者全屏操作. ## using defaults found in /dev/null#Yo ...
- 软件设计----LisKov替换原则(LSP)
LisKov替换原则的定义:一个软件实体如果使用的是一个基类的话,一定适用于其子类,而且根本不能觉察出基类对象和子类对象的区别. 1)怎么理解上面的概念?就是我们程序设计的子类型能够完全替换父类型,而 ...
- thinkphp3.2.3版本在windows本地apache环境运行正常,上传到centos服务器apache环境中出现:thinkphp 上传根目录不存在!请尝试手动创建:uploads/
thinkphp 上传根目录不存在!请尝试手动创建:uploads/ ,是根目录下uploads权限问题,我把uploads权限改成了775,就可以上传图片了. chmod -R 775 u ...
- c++ 异常处理(3)
<C++编码规范与指导>一文,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了.没想到时隔几年以后才有机会把这个尾巴补完 :-). 还是那句开场白:“在恰当的场合使用恰当的特性” ...