응용 프로그램에서 로컬 메모리 캐싱을 구성하려면 Settings.py 파일에 다음 코드를 추가하십시오.
파일 기반 캐싱
파일 기반 캐싱에서 각 캐시 값은 캐싱 할 때 파일에서 개별적으로 유지됩니다. 소규모 응용 프로그램이나 메모리 기반 캐싱이 실용적이지 않은 곳에 유용합니다.
이 캐싱 시스템의 단점은 메모리 기반 캐싱에 비해 상대적으로 느리다는 것입니다.
응용 프로그램에서 파일 기반 캐싱을 구성하려면 Settings.py 파일에 다음 코드를 추가하십시오.
창문에있는 경우 다음과 같은 각각의 드라이브 문자로 위치의 경로를 시작하십시오.$ python <span>-m venv project
</span>
데이터베이스 캐싱
Django는 파일에 캐시를 저장하고 기계의 RAM을 호스팅하는 것 외에도 데이터베이스에 캐시를 저장할 수있는 기능을 제공합니다.
이것은 빠르고 잘 알려진 데이터베이스 서버를 가지고 있다면 가장 잘 작동합니다. .
응용 프로그램에서 데이터베이스 캐싱을 사용하려면 Settings 내부에 다음 코드를 추가하십시오.
캐시를 사용하기 전에 위의 설정에 언급 된 데이터베이스 테이블을 구성하려면 다음 명령을 사용하십시오.
위의 명령은 Django의 데이터베이스 캐시 시스템이 기대하는 적절한 형식의 데이터베이스에 테이블을 작성합니다. 테이블의 이름은 위치에서 가져옵니다. 이 경우 테이블 이름은 my_cache_table입니다
Memcached 캐싱
memcached는 데이터베이스 액세스를 줄이고 사이트 성능을 향상시키기 위해 웹 개발자가 사용하는 메모리 인 캐싱 시스템입니다.
Locmem 캐시와 달리, Memcached는 데몬으로 작동하며, 이는 멤버가 직접 사용자 상호 작용과 독립적으로 멤버가 배경 프로세스로 실행됨을 의미합니다. 따라서 MemCached는 컴퓨터에 별도로 설치해야합니다. 그런 다음 Django 응용 프로그램에서 Pylibmc 또는 Pymemcache와 같은 바인딩 중 하나를 설치하고 구성하여 Memcached를 사용합니다.
> Django 응용 프로그램은 아래와 같이 캐시 설정, 위치, IP 주소 및 기타 세부 사항을 추가하여 멤버 데몬에 연결할 수 있습니다.
Memcached Technology는 빠른 데이터 저장 및 검색을 위해 설계되었으므로 읽기 또는 쿼리로드가 높은 응용 프로그램에 특히 적합합니다.
MemCached의 단점은 데이터가 메모리에 저장되므로 서버가 충돌하면 손실된다는 것입니다.
redis
Redis는 캐싱에 사용할 수있는 메모리 인 데이터베이스입니다. Redis Inmemory 데이터 저장소를 사용하여 데이터를 캐시합니다. Redis는 신속성과 적응성으로 유명하여 분산 시스템 및 고성능 캐싱을위한 훌륭한 옵션입니다.
응용 프로그램에서 Redis를 사용하여 데이터를 캐시하려면 로컬 또는 원격 시스템에서 실행하는 Redis 서버가 필요합니다. 기계에 Redis를 설정하려면 Redis Getting Start Guide를 읽으십시오.
Redis 서버를 설정 한 후 Redis 용 Python 바인딩을 설치해야합니다. 이 명령을 사용하여 설치하십시오
Redis-Py 인터페이스는 Django가 기본적으로 지원하거나 Django-Redis 및 Redis 패키지를 사용하는 바인딩입니다.
Redis 서버가 LocalHost (127.0.0.1)에서 실행 중이라는 점에서 Application에서 Redis 캐싱을 구성하려면 PORT = 6379에서 다음 코드를 추가하십시오.$ python <span>-m venv project
</span>
Redis의 복잡성과 외부 서비스에 대한 의존은 트레이드 오프입니다. Redis 설치 및 구성은 다른 캐시 백엔드보다 까다로울 수 있습니다. 온라인시 두 번째 서버와 유지가 필요합니다. Redis 사용은 외부 서비스에 의존합니다. Redis가 문제가 있거나 내려 가면 응용 프로그램의 캐싱 기능에 영향을 줄 수 있습니다.
redis 를 사용하여 Django에서 캐싱 수행
좋아요, 그건 충분한 이론입니다. 이 섹션에서는 장고 응용 프로그램에서 캐싱을 수행하는 방법을 보여줍니다. 우리는 세 가지 형태의 캐싱에 중점을 둘 것입니다 :
캐싱보기
템플릿 조각 캐싱
사이트 당 캐싱
그러나 각 캐싱 양식을 자세히 수행하기 전에 먼저 프로젝트를 올바르게 설정하겠습니다. 모델을 생성, 등록 및 채우고 응용 프로그램의 URL을 구성하고 템플릿을 작성하고 Django 디버그 도구 모음을 설치하고 구성합니다.
CachedApplication 앱 내부에서 Models.py 파일을 열고 다음과 같이 보이게하십시오.
다음, admin.py 파일을 열고이 코드를 붙여 넣습니다
이 코드 스 니펫은 Django Admin Dashboard에 모델 프로그래머를 등록합니다.
모델을 채우기 전에 약간의 마이그레이션을합시다. 터미널에서 다음을 실행하십시오 :
또한 이것을 실행하십시오 :
Django에서는 터미널과 관리 대시 보드를 통해 모델을 두 가지 방식으로 채울 수 있습니다. 그러나 단순성을 위해 관리자 대시 보드를 사용합니다. Admin Dashboard는 SuperUser 전용이므로 하나를 만들어야합니다. 터미널에서 다음 명령을 실행하십시오
-
이 명령은 사용자 이름, 이메일 및 두 가지 비밀번호와 같은 슈퍼 사용자 세부 사항을 입력하라는 메시지를 표시합니다.
슈퍼 유저를 성공적으로 생성 한 후 로컬 서버를 발사하고 브라우저 에이 URL을 입력하십시오 : http://127.0.1:8000/admin/. 아래 이미지는 당신이 찍을 페이지를 보여줍니다.
-
로그인하려면 슈퍼 사용자 자격 증명을 제공하고 일단 들어가면 아래 그림과 같이 모델을 데이터로 채우십시오.
-
응용 프로그램 내부에서 템플릿 폴더를 만들고 내부에 list_all.html 파일을 만듭니다. 지금은 HTML 파일을 비워 두십시오. views.py 파일을 열고 다음과 같이 보이게 만드십시오.
이제 프로젝트의 urls.py 파일에 홈보기를 등록하겠습니다. CachedProject 폴더 내부에서 urls.py 파일을 열고이 코드를 붙여 넣습니다.
이제 list_all.html 파일을 열고 다음 코드를 붙여 넣습니다.$ python <span>-m venv project
</span>
Django 디버그 도구 모음을 설치하겠습니다. 이 패키지는 개발자가 Django 응용 프로그램의 성능을 모니터링하여 데이터베이스 쿼리, HTTP 요청, 템플릿 렌더링 시간 등에 대한 자세한 정보를 제공하는 파이썬 패키지입니다. 따라서 터미널 에서이 명령을 입력하십시오
django-debug-toolbar를 구성하려면 settings.py 파일을 엽니 다.
미들웨어 목록에 디버그 도구 모음을 추가하십시오
$ .<span>\project\Scripts\activate
</span>
디버그 도구 모음 미들웨어를 바로 다음 바로 다음 :
또한이 전에 와야합니다 :
다음과 같이 Redis 캐시 구성을 추가하십시오
$ <span>source project/bin/activate
</span>
또한이 코드를 settings.py 파일에 추가합니다.
마지막으로 urls.py 파일에서 디버그 도구 모음 URL을 구성하겠습니다. 가져 오기 바로 아래 에서이 코드 라인을 추가하십시오
내부 URLPatterns 목록 내부 에이 코드를 추가하십시오
$ pip <span>install django
</span>
지금까지 도달 한 우리는 가면 좋습니다. 서버를 실행 하고이 URL을 브라우저에 붙여 넣습니다 : http://127.0.1:8000/home/. 아래 이미지는 우리가 얻는 페이지를 보여줍니다.
$ django-admin startproject cachedproject
이보기를 사용하여 응용 프로그램을 실행할 때마다 SQL 쿼리가됩니다. 이 경우 3 개의 쿼리가 2.60ms를 차지했습니다. 따라서 매번 동일한 데이터에 대한 SQL 쿼리를 피하기 위해 View Caching을 구현합니다.
캐싱보기
이름에서 알 수 있듯이, 캐싱 캐싱 뷰는 개별 Django보기의 결과를 캐싱하는 것입니다. 이 섹션에서는 View Caching을 구현합니다. 이렇게하려면 View.py 파일을 몇 가지 수정합니다. 그것을 열고이 가져 오기를 추가하십시오 :
$ <span>cd cachedproject
</span>
보기 바로 위의 도이 데코레이터를 추가하십시오
(60*15)는 @cache_page에 전달 된 인수입니다. 몇 초 만에 캐시 타임 아웃을 나타냅니다. 홈 뷰는 15 분 동안 캐시됩니다.
이제 같은보기를 방문하여 페이지를 새로 고치십시오. 우리는 아래 그림을 볼 것입니다. $ python manage.py startapp cachedapplication
위의 이미지에서는 캐시에서 데이터가 가져 오면 0 SQL 쿼리가 수행되는 것을 알 수 있습니다. 이를 통해 사용자에게 캐시 된 컨텐츠를 제공하여 서버의 부하를 줄이는 데 도움이됩니다. INSTALLED_APPS <span>= [
</span> <span>'django.contrib.admin',
</span> <span>'django.contrib.auth',
</span> <span>'django.contrib.contenttypes',
</span> <span>'django.contrib.sessions',
</span> <span>'django.contrib.messages',
</span> <span>'django.contrib.staticfiles',
</span> <span># new application added
</span> <span>'cachedapplication',
</span><span>]
</span>
템플릿 조각 캐싱
이 캐싱은 프로젝트에서 템플릿의 특정 부분을 캐싱하는 것이 포함됩니다. 템플릿에 계산이 큰 부분이 있으면 템플릿 파편 캐싱이 편리합니다. 이 캐싱을 구현하기 위해이 태그를 사용합니다. { %로드 캐시 %}, { % cache %} 및 { % endcache %}. { % 캐시 %} 태그는 캐시 타임 아웃과 특정 캐시 조각을 식별하기위한 고유 한 캐시 키라는 두 인수를 취합니다.
이제이 캐싱 기술을 구현하기 전에 프로젝트를 실행해보십시오. 아래 이미지는 우리가 얻을 수있는 것을 보여줍니다.
총 시간은 220.26ms이고 3 개의 SQL 쿼리는 7.75ms로 수행됩니다.
이제 캐싱 기술을 구현해 봅시다. 템플릿의 부분을 캐시합니다. 템플릿/list_all.html을 열고 다음과 같이 보이도록 수정하십시오.
파일 위에서 { %로드 캐시 %}를 통해 캐시를로드하고 있으며 { % 캐시 500 프로그래머 %} 및 { % endcache %}.
프로젝트를 다시 실행하면 아래 그림을 받게됩니다.
위의 이미지에서 캐싱이 구현 된 후 결과가 개선되었음을 알 수 있습니다.
사이트 당 캐싱
사이트 당 캐싱은 전체 사이트 캐싱이라고도합니다. 전체 사이트 페이지를 캐싱하는 것이 포함됩니다. 구현하려면 Settings.py 파일 에이 미들웨어 구성을 추가해야합니다.
$ python <span>-m venv project
</span>
또한이 선을 추가하십시오 :
결론
결론적으로, Django의 캐싱을 이해하는 것은 고성능 웹 애플리케이션을 만들고자하는 웹 개발자에게 필수적입니다. 이 기사는 캐싱의 이점, Django의 캐싱 설정 및 구현 모범 사례와 같은 주제를 다루는 Django의 캐싱에 대한 포괄적 인 안내서를 제공했습니다. 이 지식으로 무장 한 백엔드 웹 개발자는 자신의 캐싱을 Django 프로젝트에 자신있게 통합하여 성능을 최적화 할 수 있습니다.
이 기사를 즐겼다면 itepoint에서 더 많은 Django 기사를 확인하십시오.