완전한 전자 상거래 프로젝트-(10) 성능 최적화 (1) : 정적 홈페이지

홈페이지 정적

소개

  • 시나리오 : 데이터 방어가 매우 작은 경우 페이지를 정적으로 만들 수 있습니다. 홈페이지는 홈페이지의 렌더링 된 html 페이지를 저장하는 것입니다.
  • 이점:
    • Django 실행이 필요하지 않습니다.
    • mysql (데이터베이스) 실행 필요 없음
    • 성능 향상 및 서버 실행 효율성 향상

가정에서 자주 사용하는 솔루션

타임 드 생성

렌더링 된 HTML 페이지는 어디에서 찾을 수 있습니까?

여기에 사진 설명 삽입
render 함수가 렌더링 된 템플릿 페이지를 포함하는 HttpResponse 객체를 반환 한다는 것을 알고 있습니다. 이것이 우리에게 필요한 것입니다.

  • 그런 다음 찾기 : HttpSesponse 객체에 속성이 있으며 , 본문에 대한 응답 으로 응답을 얻을 수 있습니다 . 이것은 우리가 필요로하는 템플릿 렌더링이며 정적 항목을 저장할 필요가 있습니다.
    여기에 사진 설명 삽입
정적 페이지의 코드 저장 (일부)
  • 이 정적 페이지의 보존을 생성하는 파일을 생성하고 그 안에 메소드를 작성합니다.
	# 构造上下文
    context = {
    
    
        'categories': categories,  # 三级分类
        'contents': contents,  # 轮播图
    }
    response =  render(None, 'index.html', context)
    # 2.拿到html
    html_str = response.content.decode()
    # 写文件
    with open(os.path.join(settings.BASE_DIR, 'static/index1.html'), 'w') as f:
        f.write(html_str)
타이밍을 설정하는 방법? 이 메서드를 정기적으로 호출하여 새 정적 페이지를 생성하십시오.
django 호출 리눅스 타이머를 만드는 데 사용되는 설치 패키지
# 安装
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~60为星期天)。

# 例子
CRONJOBS = [
    # 每5分钟生成一次首页静态文件
    ('*/5 * * * *', 'contents.crons.generate_index_html', '>> ' + os.path.join(os.path.dirname(BASE_DIR), 'logs/crontab.log'))
]

# 解决中文问题
# 在定时任务中,如果出现非英文字符,会出现字符异常错误
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'

# 管理定时任务
# 添加定时任务到系统中
$ python manage.py crontab add

# 显示已激活的定时任务
$ python manage.py crontab show

# 移除定时任务
$ python manage.py crontab remove
  • 이제이 명령을 사용하여 타이머를 관리 할 수 ​​있습니다.
    여기에 사진 설명 삽입
    그 후 정적 메서드가 5 분마다 자동으로 실행됩니다.

추천

출처blog.csdn.net/pythonstrat/article/details/108215503