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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM