mutter.monotalk.xyz- Post List は
サイト公開後しばらくたちますが、
実施した
前提
Python の
バージョン python3.6 -V Python 3.6.4
Django の
バージョン Django 1.10.8
Wagtail の
バージョン wagtail 1.13.1
Cache ミドルウェアに
ついて
Memcached を使用しています。 インストール方法は 過去に まとめていますので、 よろしければご 確認ください。
CentOS 7.4 にMemcached を インストール、 ログの 設定まで 実施する | Monotalk Wagtail インストール方法に
ついて
過去にまとめています。 インストールが 必要であればご 確認ください。
python Mac OS High Sierra にwagtail を インストールする | Monotalk
python Mac OS High Siera にwagtail puput を インストールする | Monotalk
Wagtail の Cache 設定に ついて
Wagtail Cache
で
ドキュメントには、
Wagtail の
使用している
Cache の 設定手順
以下、
1. settings.py に Cache の 設定を 追加する
Memcached をKEY_PREFIX
を
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', 'KEY_PREFIX': 'mutter' } }
2. 拡張エンドポイントの 作成
Wagtail の
アプリケーションでは、PagesAPIEndpoint
、ImagesAPIEndpoint
、DocumentsAPIEndpoint
を
@method_decorator(cache_page(60*60*4))
の
endpoints.py
from wagtail.api.v2.endpoints import PagesAPIEndpoint from wagtail.wagtailimages.api.v2.endpoints import ImagesAPIEndpoint from wagtail.wagtaildocs.api.v2.endpoints import DocumentsAPIEndpoint from django.views.decorators.cache import cache_page from django.utils.decorators import method_decorator class CachedPagesAPIEndpoint(PagesAPIEndpoint): @method_decorator(cache_page(60*60*4)) def listing_view(self, request): response = super().listing_view(request) return response @method_decorator(cache_page(60*60*4)) def detail_view(self, request, pk): response = super().detail_view(request, pk) return response class CachedImagesAPIEndpoint(ImagesAPIEndpoint): @method_decorator(cache_page(60*60*4)) def listing_view(self, request): response = super().listing_view(request) return response @method_decorator(cache_page(60*60*4)) def detail_view(self, request, pk): response = super().detail_view(request, pk) return response class CachedDocumentsAPIEndpoint(DocumentsAPIEndpoint): @method_decorator(cache_page(60*60*4)) def listing_view(self, request): response = super().listing_view(request) return response @method_decorator(cache_page(60*60*4)) def detail_view(self, request, pk): response = super().detail_view(request, pk) return response
apis.py
作成したクラスを、 エンドポイントと して 登録します。 from wagtail.api.v2.router import WagtailAPIRouter from mutter.endpoints import CachedPagesAPIEndpoint from mutter.endpoints import CachedImagesAPIEndpoint from mutter.endpoints import CachedDocumentsAPIEndpoint # Create the router. "wagtailapi" is the URL namespace api_router = WagtailAPIRouter('wagtailapi') # Add the three endpoints using the "register_endpoint" method. # The first parameter is the name of the endpoint (eg. pages, images). This # is used in the URL of the endpoint # The second parameter is the endpoint class that handles the requests api_router.register_endpoint('pages', CachedPagesAPIEndpoint) api_router.register_endpoint('images', CachedImagesAPIEndpoint) api_router.register_endpoint('documents', CachedDocumentsAPIEndpoint)
3. Cache の 登録確認
過去に
Memcached から
:1:d0a85dd3c1caaf93d4c941da33589074 142119 2019年 1月 14日 月曜日 23:31:24 JST :1:be81ad325c6b95f97e5710ff25c7f50b 143967 2019年 1月 14日 月曜日 18:25:59 JST mutter:1:views.decorators.cache.cache_page..GET.8afb26d942c14fe395e23c16a8b70171.83bf0aec533965b875782854d37402b7.ja.Asia/Tokyo 164851 2019年 1月 14日 月曜日 03:54:57 JST :1:179100ff48a19e23062a530013919d95 196219 2019年 1月 14日 月曜日 21:54:56 JST
mutter:1:views.decorators.cache.cache_page..
が参考
以下、
- Caching - Django REST framework
- django rest framework - Can the results from the Wagtail API be cached or have a
Cache-Control
header set? - Stack Overflow
以上です。
コメント