摘要:緩存數(shù)據(jù)就是為了保存那些需要很多計算資源的結(jié)果,這樣的話就不必在下次重復(fù)消耗計算資源。自帶了一個健壯的緩存系統(tǒng)來保存動態(tài)頁面,避免每次請求都重新計算。默認不會關(guān)閉連接盡可能重用連接。
發(fā)送郵件
概述:Django中內(nèi)置了郵件發(fā)送功能,發(fā)送郵件需要使用SMTP服務(wù),常用的免費服務(wù)器有:163、126、QQ
注冊并登陸163郵箱
打開POP3/SMTP服務(wù)與IMAP/SMTP服務(wù)
重置授權(quán)密碼
配置#郵件發(fā)送 EMAIL_BACKEND="django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST="smtp.163.com" EMAIL_PORT=25 #發(fā)送郵件的郵箱 EMAIL_HOST_USER="clement@163.com" #郵箱的授權(quán)密碼 EMAIL_HOST_PASSWORD="a12345678" #收件人看到的發(fā)件人 EMAIL_FROM="DAI發(fā)送"
send_mail(subject, message, from_email, recipient_list)
from django.conf import settings from django.core.mail import send_mail def sendMail(request): msg = "點擊激活" send_mail("注冊激活","",settings.EMAIL_FROM,["clement@163.com"],html_message=msg) return HttpResponse("郵件已發(fā)送")緩存
概述:對于中等流量的網(wǎng)站來說,盡可能的減少開銷是非常必要的。緩存數(shù)據(jù)就是為了保存那些需要很多計算資源的結(jié)果,這樣的話就不必在下次重復(fù)消耗計算資源。獲取數(shù)據(jù)的數(shù)據(jù)的時候就是去緩存中拿,拿到了直接返回,沒拿到就去數(shù)據(jù)庫中查詢,篩選,然后緩存到數(shù)據(jù)庫, 然后返回給模板。
Django自帶了一個健壯的緩存系統(tǒng)來保存動態(tài)頁面,避免每次請求都重新計算。
Django提供了不同級別的緩存策略,可以緩存特定的視圖的輸出、可以僅僅緩存那些很難計算出來的部分、或者緩存整個網(wǎng)站
目的:優(yōu)化數(shù)據(jù)結(jié)構(gòu);優(yōu)化了對數(shù)據(jù)的查詢;篩選,過濾;減少了對磁盤的IO
官方文檔:https://docs.djangoproject.co...
設(shè)置緩存通過設(shè)置決定把數(shù)據(jù)緩存在哪里,是數(shù)據(jù)庫中、文件系統(tǒng)中還是內(nèi)存中
默認緩存(內(nèi)存)CACHES={ "default":{ "BACKEND":"django.core.cache.backends.locmem.LocMemCache", "LOCATION": "unique-snowflake", "TIMEOUT":60 } }
參數(shù)TIMEOUT:緩存的默認過期時間,以秒為單位
默認為300秒
設(shè)置為None,表示永不過期
設(shè)置為0造成緩存立即失效
文件緩存CACHES = { "default": { "BACKEND": "django.core.cache.backends.filebased.FileBasedCache", "LOCATION": "c:/foo/bar", "TIMEOUT":300, } }數(shù)據(jù)庫緩存
CACHES = { "default": { "BACKEND": "django.core.cache.backends.db.DatabaseCache", "LOCATION": "my_cache_table", "TIMEOUT": "60", "KEY_PREFIX": "bbs", "VERSION": "1", "OPTIONS": { "MAX_ENTRIES": "300" } } }
創(chuàng)建緩存表: python manage.py createcachetable
redis緩存官網(wǎng): http://django-redis-chs.readt...
redis操作文檔:http://redisdoc.com
默認使用redis中的1數(shù)據(jù)庫,但可以指定使用哪個db
安裝pip install django-redis
配置# ---配置Session和Cache--- CACHES={ "default":{ "BACKEND": "django_redis.cache.RedisCache", "LOCATION":"127.0.0.1:6379/12", # 指定db12 "TIMEOUT":60, "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", # 指定連接Redis的客戶端類 # "PASSWORD": "mysecret", # "SOCKET_CONNECT_TIMEOUT": 5, # in seconds # "SOCKET_TIMEOUT": 5, # in seconds # "CONNECTION_POOL_KWARGS": {"max_connections": 100}, # "CONNECTION_POOL_CLASS": "myproj.mypool.MyOwnPool", } } } SESSION_ENGINE = "django.contrib.sessions.backends.cache" # --結(jié)束Session和Cache配置
參數(shù) | 解釋 |
---|---|
SOCKET_CONNECT_TIMEOUT | socket 建立連接超時設(shè)置 |
SOCKET_TIMEOUT | 連接建立后的讀寫操作超時設(shè)置 |
CONNECTION_POOL_KWARGS | 設(shè)置連接池的最大連接數(shù)量 |
CONNECTION_POOL_CLASS | 自己的連接池子類 |
django-redis 使用 redis-py 的連接池接口, 并提供了簡單的配置方式. 除此之外, 你可以為 backend 定制化連接池的產(chǎn)生。redis-py 默認不會關(guān)閉連接, 盡可能重用連接。
連接池概念
為什么使用連接池?首先Redis也是一種數(shù)據(jù)庫,它基于C/S模式,因此如果需要使用必須建立連接,稍微熟悉網(wǎng)絡(luò)的人應(yīng)該都清楚地知道為什么需要建立連接,C/S模式本身就是一種遠程通信的交互模式,因此Redis服務(wù)器可以多帶帶作為一個數(shù)據(jù)庫服務(wù)器來獨立存在。假設(shè)Redis服務(wù)器與客戶端分處在異地,雖然基于內(nèi)存的Redis數(shù)據(jù)庫有著超高的性能,但是底層的網(wǎng)絡(luò)通信卻占用了一次數(shù)據(jù)請求的大量時間,因為每次數(shù)據(jù)交互都需要先建立連接,假設(shè)一次數(shù)據(jù)交互總共用時30ms,超高性能的Redis數(shù)據(jù)庫處理數(shù)據(jù)所花的時間可能不到1ms,也即是說前期的連接占用了29ms,連接池則可以實現(xiàn)在客戶端建立多個鏈接并且不釋放,當需要使用連接的時候通過一定的算法獲取已經(jīng)建立的連接,使用完了以后則還給連接池,這就免去了數(shù)據(jù)庫連接所占用的時間。
配置默認連接池
配置默認連接池很簡單, 你只需要在?CACHES?中使用?CONNECTION_POOL_KWARGS?設(shè)置連接池的最大連接數(shù)量即可
你可以得知連接池已經(jīng)打開多少連接:
from django.core.cache import get_cache from django_redis import get_redis_connection r = get_redis_connection("default") # Use the name you have defined for Redis in settings.CACHES connection_pool = r.connection_pool print("Created connections so far: %d" % connection_pool._created_connections)
使用自己的連接池子類
有時你想使用自己的連接池子類. django-redis 提供了?CONNECTION_POOL_CLASS?來配置連接池子類
myproj/mypool.py
from redis.connection import ConnectionPool class MyOwnPool(ConnectionPool): # Just doing nothing, only for example purpose pass緩存的用法 單個view緩存
django.views.decorators.cache.cache_page裝飾器用于對視圖的輸出進行緩存
from django.views.decorators.cache import cache_page @cache_page(60 * 2) def index(request): # return HttpResponse("sunck is a good man") return HttpResponse("sunck is a nice man")
參數(shù): timeout : 有效時長 # we"ve written it as 60 * 15 for the purpose of readability cache: 緩存到哪一個庫中;很少使用;針對于系統(tǒng)配置了多個緩存 如: @cache_page(timeout=60, cache="filecache") key_prefix: 前綴模板片段緩存
cache標簽: 參數(shù)
緩存時間,以秒為單位
給緩存片段起名字
{#{% load static from staticfiles %}#} {% load static %} {% load cache %}原生cache主頁 {# #}sunck is a nice man
{% cache 120 sunck %}nice man
{% endcache %}
from django.core.cache import cache 查看所有緩存的key: cache.keys("*") 設(shè)置:cache.set(鍵, 值, 有效時間) 獲取:cache.get(鍵) 刪除:cache.delete(鍵) 清空:cache.clear() >>> cache.set_many({"a": 1, "b": 2, "c": 3}) >>> cache.getmany(["a","b","c"]) {"a": 1, "b": 2, "c": 3} cache.delete_pattern("foo_*") # 全局通配符
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42003.html
摘要:前言使用郵箱注冊驗證,我們需要理清設(shè)計思路問題一注冊信息提交后需要對填寫的郵箱號發(fā)送郵件問題二郵件到達時用戶如何進行激活,是通過請求還是獲取驗證碼本篇使用接口激活問題三郵件激活如何設(shè)置有效時間通過以上三個問題,博主來幫助大家掌握郵箱驗證問題 前言 使用郵箱注冊驗證,我們需要理清設(shè)計思路: 問題一:注冊信息提交后需要對填寫的郵箱號發(fā)送郵件 問題二:郵件到達時用戶如何進行激活,是通過get...
摘要:持久化到中反向代理的負載均衡基于的集群搭建如何實現(xiàn)從中訂閱消息轉(zhuǎn)發(fā)到客戶端的擴展是阻塞式,使用訂閱發(fā)布模式時,會導(dǎo)致整個進程進入阻塞。緩存是用于解決高并發(fā)場景下系統(tǒng)的性能及穩(wěn)定性問題的銀彈。 showImg(https://segmentfault.com/img/bVYE6k?w=900&h=385); Redis 是由意大利程序員 Salvatore Sanfilippo(昵稱:a...
摘要:下面就是對這種攻擊原理的介紹以及預(yù)防方法。針對該漏洞的特點,通過覆蓋數(shù)組構(gòu)造函數(shù)以竊取暴露返回數(shù)組,而現(xiàn)在大多數(shù)瀏覽器還無法防范這種攻擊。在上周的挪威開發(fā)者大會上,我做了一個針對劫持漏洞的演示。 注:作者發(fā)表這篇文章的時間較早,某些方法可能并不是最好的解決方案,但針對這種漏洞進行的攻擊還依然可見,如早期的:QQMail郵件泄露漏洞。直到現(xiàn)在,你在某些郵箱打開一個外部鏈妝,依然會有安全警...
摘要:此問題稱為查詢問題。您將只執(zhí)行兩個查詢而不是這是巨大的性能提升。這項工作是通過從數(shù)據(jù)庫中執(zhí)行查詢完成的查詢可能涉及到表以及其他的一些表。比如查詢,視圖,時間等等另一個非常酷的工具是,對應(yīng)用,有優(yōu)雅的調(diào)試助手的美稱。 showImg(https://segmentfault.com/img/remote/1460000018339917?w=1280&h=722); 讓我們開始吧!假若你...
閱讀 2131·2023-04-26 02:19
閱讀 1920·2021-11-19 09:40
閱讀 1710·2021-09-29 09:35
閱讀 3578·2021-09-29 09:34
閱讀 4315·2021-09-07 10:16
閱讀 5547·2021-08-11 11:14
閱讀 3585·2019-08-30 15:54
閱讀 1635·2019-08-30 15:53