1. 程式人生 > 實用技巧 >「react」讓後臺走向國際化 i18next

「react」讓後臺走向國際化 i18next

一、Django六種快取方式(都是在settings中設定)

1、開發除錯(開發除錯使用,實際不做任何操作)

CACHES = {
    'default': {       
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',     # 引擎
        'TIMEOUT': 300,                                               # 快取超時時間(預設300,None表示永不過期,0表示立即過期)
        'OPTIONS':{
            'MAX_ENTRIES
': 300, # 最大快取個數(預設300) 'CULL_FREQUENCY': 3, # 快取到達最大個數之後,剔除快取個數的比例,即:1/CULL_FREQUENCY(預設3) }, 'KEY_PREFIX': '', # 快取key的字首(預設空) 'VERSION'
: 1, # 快取key的版本(預設1) 'KEY_FUNCTION' 函式名 # 生成key的函式(預設函式會生成為:【字首:版本:key】) } } # 自定義key 可用於‘KEY_FUNCTION' def default_key_func(key, key_prefix, version): """ 自定義生成key的函式
""" return '%s:%s:%s' % (key_prefix, version, key) def get_key_func(key_func): """ 如果key_func是空 預設使用 default_key_func 否則,則使key_func函式 """ if key_func is not None: #檢查該函式是否可以呼叫 if callable(key_func): return key_func else: return import_string(key_func) return default_key_func

2、記憶體快取

# 此快取將內容儲存至記憶體的變數中
    # 配置:
        CACHES = {
            'default': {
                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
                'LOCATION': 'unique-snowflake',  #設定一個唯一值
            }
        }
    # 注:其他配置同開發除錯版本,就是將開發除錯版本里面的這幾句換成上面這個即可

3、檔案快取(適合小網站)

CACHES = {
     'default': {
          'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
          'LOCATION': '/var/tmp/django_cache',  #快取檔案路徑
          }
     }
#其他配置跟開發除錯一樣

4、資料庫

CACHES = {
    'default': {
          'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
          'LOCATION': 'my_cache_table', # 資料庫表
        }
   }
#其他設定跟開發除錯的一樣

5.1、Memcache快取(python-memcached模組)

 #方式1  
 CACHES = {
     'default': {
         
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': '127.0.0.1:11211', #指定快取伺服器IP地址和埠
       }
   }
  #方式2
  CACHES = {
      'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
# 指定指定區域網內的主機名加socket套接字為Memcache快取伺服器
'LOCATION': 'unix:/tmp/memcached.sock', } } # 方式3 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ #指定一臺或多臺主機IP地址和埠為快取伺服器 '172.19.26.240:11211', '172.19.26.242:11211', ] } } # 方式4 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ #以元組的形式,第一個放快取伺服器的IP跟埠 #第二個引數放權重 ('172.19.26.240:11211',5), ('172.19.26.242:11211',1) ] } }
# 注:其他配置同開發除錯版本,就是將開發除錯版本里面的這幾句換成上面這個即可

5.2、Memcache快取(pylibmc模組)

#方式1
CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
            'LOCATION': '127.0.0.1:11211', #指定IP和埠為快取伺服器
        }
    }
# 方式2
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
         #指定區域網內的主機名加socket套接字為Memcache快取伺服器
        'LOCATION': '/tmp/memcached.sock',
        }
    }   
#方式3
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
         'LOCATION': [
             #分散式快取,程式會把以下多臺伺服器當作一個單獨的快取,
             #不會再每臺伺服器上覆制快取值
             '172.19.26.240:11211',
             '172.19.26.242:11211',
          ]
       }
  }
# 注:其他配置同開發除錯版本,就是將開發除錯版本里面的這幾句換成上面這個即可

6、Redis快取(需要安裝django-redis)

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
            # "PASSWORD": "密碼",
        }
    }
}
# 檢視中操作 from django_redis import get_redis_connection conn = get_redis_connection("default")

二、快取應用

1、前後端混合開發使用

(1)全站快取

 在settings檔案中的中介軟體最上跟最下分別配置一個update,fetch中介軟體

    MIDDLEWARE = [
        # Update必須放在第一個,
        'django.middleware.cache.UpdateCacheMiddleware',
        # 其他中介軟體...
        #Fetch必須放在最後一個
        'django.middleware.cache.FetchFromCacheMiddleware',
    ]    

(2)單頁面快取

#方法一:在檢視函式上加裝飾器
from django.views.decorators.cache import cache_page
@cache_page(5) #快取5秒
def test(request):
    ctime=time.time()
    return render(request,'test.html',locals())

#方法二:在路由上配置裝飾器
from django.views.decorators.cache import cache_page
urlpatterns=[
    url(r'test',cache_page(5)(views.test)),
]

(3)頁面區域性快取

# a. 引入TemplateTag
        {% load cache %}
# b. 使用快取
        {% cache 5000 快取key %}
            快取內容
        {% endcache %}

#例子:
    {% load cache %}
    #    key可以隨便取
    {% cache 10 'name' %}
    <h2>{{ ctime }}</h2>
    {% endcache %}

2、前後端分離的使用

from django.core.cache import cache
cache.set('key',value可以是任意資料型別)
cache.get('key')
#例子
from django.core.cache import cache
def test(request):
    if cache.get('key'):
        ctime=cache.get('key')
       
    else:
        ctime=time.time()
        cache.set('key',ctime)
    return render(request,'test.html',locals())