Django のトピックスです。
Django にはもともと Django's cache framework というキャッシュ機構(フレームワーク)が入っているのですが、
今回はその中で per-page cache という、ページ単位でキャッシュしてくれる機能を有効にしました。
MIDDLEWARE_CLASSES = (
# 一番最後に以下の3行を追記する
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
# さらに、 CACHES も追記
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'sample_cache',
}
}
キャッシュ用テーブルを作成する
$ ./manage.py createcachetable
完了すると、 sample_cache テーブルが作成されています。
基本的にはこれだけでキャッシュが有効になります。(再起動は必要)
mysql> desc sample_cache;
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| cache_key | varchar(255) | NO | PRI | NULL | |
| value | longtext | NO | | NULL | |
| expires | datetime(6) | NO | MUL | NULL | |
+-----------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> select cache_key, expires from sample_cache limit 10;
+----------------------------------------------------------------------------------------------------------------+----------------------------+
| cache_key | expires |
+----------------------------------------------------------------------------------------------------------------+----------------------------+
| :1:views.decorators.cache.cache_header..f63760d14d86adb7b746749a4e9f057c.ja | 2017-09-26 20:01:01.000000 |
| :1:views.decorators.cache.cache_page..GET.f63760d14d86adb7b746749a4e9f057c.d41d8cd98f00b204e9800998ecf8427e.ja | 2017-09-26 20:01:01.000000 |
| :1:views.decorators.cache.cache_header..c49aaf494ecc43da15574567b723d583.ja | 2017-09-26 20:01:07.000000 |
| :1:views.decorators.cache.cache_page..GET.c49aaf494ecc43da15574567b723d583.d41d8cd98f00b204e9800998ecf8427e.ja | 2017-09-26 20:01:07.000000 |
| :1:views.decorators.cache.cache_header..847a256705f28e69e0d3228b222b9245.ja | 2017-09-26 20:01:11.000000 |
| :1:views.decorators.cache.cache_page..GET.847a256705f28e69e0d3228b222b9245.d41d8cd98f00b204e9800998ecf8427e.ja | 2017-09-26 20:01:11.000000 |
| :1:views.decorators.cache.cache_header..90db813adf0cd65f3b7769485a2b5196.ja | 2017-09-26 20:01:13.000000 |
| :1:views.decorators.cache.cache_page..GET.90db813adf0cd65f3b7769485a2b5196.d41d8cd98f00b204e9800998ecf8427e.ja | 2017-09-26 20:01:13.000000 |
| :1:views.decorators.cache.cache_header..617fd9349103ea8a5f68286566e0d4d6.ja | 2017-09-26 20:01:15.000000 |
| :1:views.decorators.cache.cache_page..GET.617fd9349103ea8a5f68286566e0d4d6.d41d8cd98f00b204e9800998ecf8427e.ja | 2017-09-26 20:01:15.000000 |
+----------------------------------------------------------------------------------------------------------------+----------------------------+
10 rows in set (0.00 sec)
全然人気がなくて容量がやたら重いアルバムページを適当にピックアップw
Chrome の Developer Tools で計測してみました。
BEFORE
AFTER
ブラウザキャッシュが効いてるだけ説もありますが、一定の効果はありそうです。(;´Д`)ε-(´∀`*)ホッ
ざっと動かすだけではこれで良いですが、一応以下も併せて設定しておくのが吉だと思います。
settings.py
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_SECONDS = 60 * 10 # 10 分(デフォルト)
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'sample_cache',
'TIMEOUT': 60 * 10 # 10 分 ,
'OPTIONS': {
'MAX_ENTRIES': 10000,
'CULL_FREQUENCY': 2,
},
}
}
mac に pip をインストールする
mac は標準で python が入っていますが、パッケージ管理の pip がインストールされていないので入れてみました。
2017/05/26 09:00
[GAS] Google Drive の特定フォルダ配下のフォルダ・ファイルの権限を一括で移譲する
Google Drive の特定フォルダ配下のファイル・フォルダの権限を一括で移譲するツールを Google Apps Script で作りました。
2018/11/10 15:54
[Windows] Ophcrack を使ってユーザーパスワードを解析する方法
家族で使っていた Windows7 のログインパスワードを忘れたため、Ophcrack を使って解析したときの記録です。
2017/09/30 21:00
[shell] フォルダ内にある大量の ZIP ファイルをまとめて解凍する
とある ZIP を解凍すると中に大量の ZIP が居たときに幸せになれるコマンドを紹介します
2018/06/19 23:45
[MySQL] データファイルから DB を復元する
先日 MySQL が再起動できなくなる問題が発生し、急遽データファイル(.frm, .ibd)から復元しました
2018/11/25 12:44