Flask Cache | Как работает кэш в Flask?
Кэш Flask определяется как метод в утилите Flask, который позволяет пользователю сохранять результат операции, повторный запуск которой может занять огромное количество времени или, другими словами, повторное выполнение операции обходится дорого. и опять. Эта операция в целом представляет собой вызов функции.
Определение Flask Cache
При таком «сохранении» результата после кэширования при повторном выполнении операции ответ вытаскивается из хранилища вместо фактического выполнения операции. Эта утилита является расширением Flask, которое добавляет поддержку кэширования приложений Flask на серверной стороне. Следует иметь в виду одну важную вещь: когда что-то работает медленно, используйте кэши!
Синтаксис
Ниже мы сначала рассмотрим важный синтаксис, который позволит нам выполнять задачи, которые не менее важны, чем понимание работы кеша в Flask.
Установка расширения кэша Flask через любой терминал:
easy_install Flask-Caching OR pip install Flask-Caching
Импорт модуля кэша Flask в код Python:
from flask_caching import Cache cache = Cache(config={'CACHE_TYPE': <select choice from list of types>})
Возможность кэширования функции просмотра с помощью декоратора @cached:
@cache.cached(timeout=27) def index(): return render_template(<html page>)
Возможность кэширования другой функции с помощью декоратора @cached:
@cache.cached(timeout=50, key_prefix='custom_func') def custom_list_function(): variable = function_name() return [random.randrange(0, 1) for x in range(2709)] cached_list = custom_list_function() Caching Data Explicitly: cache.set (*args, **kwargs) Clearing cached Data: cache.clear()
Как работает кеш в Flask?
Теперь, когда мы знаем, как будет выглядеть типичная структура процесса кэширования во Flask, теперь не менее важно понять, как работает кэш фляги, и что происходит при различных функциях использования кэша во Flask.
Кэш управляется через экземпляр, объявленный в коде. Кроме того, пользователи могут легко настроить экземпляр Cache позже в коде, используя метод init_app. Теперь для того, чтобы кэширование работало, важно указать тип кэша, поскольку он будет включать тип объекта кэширования, который необходимо использовать в кэше колб. По умолчанию у нас значение null, что означает, что кэша не будет до тех пор, пока оно не будет указано. Существуют различные другие типы кеша, и наиболее широко используется простой метод кеша, а другие его можно использовать в зависимости от желательности приложения, которое разрабатывается с использованием flask.
Как только тип кэша будет импортирован в виде строки, он будет создан. Наконец, возврат этого объекта импорта будет объектом кэша, соответствующим API кэша. На этом этапе создается экземпляр кеша вместе с типом кеша. Опубликовав это, можно использовать экземпляр кеша в соответствии с требованиями разработки приложения.
Теперь мы начнем обсуждать еще одно расширение того, что мы узнали ранее о создании экземпляра кэша. После создания экземпляра объекта мы можем использовать концепцию декораторов для кэширования функций. Кэширование выполняется для функции просмотра определенным образом, а для других функций нам необходимо включить аргумент, а именно key_prefix. Здесь важно понять, что делает key_prefix при работе с кешем. Key_prefix используется для генерации ключа для значения, которое было кэшировано. Но почему этот аргумент вообще используется? Какую роль играет этот аргумент? Проще говоря, это отличает функцию просмотра от других функций.
Чтобы понять это более подробно, рассмотрим следующий пример. Предположительно есть 2 функции, которые вызывают одну и ту же функцию, состоящую из кеша. Теперь существует вероятность перезаписи кэшированного значения, поскольку с ним не связан никакой ключ. Именно это и делает key_prefix. Он поддерживает пару сопоставлений ключ-значение, где ключ может быть именем функции или чем-то похожим на функцию, из которой вызывается другая функция, состоящая из кэширования, а значение является результатом функции. В следующий раз, когда где-либо будет вызван тот же самый кэш_ключ, flask знает, какое значение представить.
Теперь следующая часть понимания работы кеша — это узнать, как очистить кеш, если это необходимо. Это очень полезно в случаях превышения нормального использования памяти.
Используя функцию очистки кэша, мы можем очистить данные, хранящиеся в этом экземпляре. Это очень необходимо после завершения выполнения кода. Следует иметь в виду, что полная очистка кеша может не поддерживаться некоторыми реализациями серверной части, а в некоторых случаях отсутствие использования префикса ключа может привести к удалению всей базы данных!
Понимая, как осуществляется создание экземпляров, какую роль играет важный аргумент в принятии решения о том, как будет управляться кеш, у нас теперь есть полная картина работы кеша?
Преимущества и недостатки
В этом разделе мы рассмотрим различные преимущества и недостатки кэширования в flask.
Преимущества:
- Кэширование помогает ускорить процесс загрузки при веб-разработке, что позволяет сократить время отклика в веб-приложении.
- В результате использования кеша в веб-приложении ресурсы, используемые при загрузке страницы, сокращаются, и, следовательно, эти ресурсы доступны для выполнения других команд.
- Повторное взаимодействие со сторонними источниками в приложении сведено к минимуму и, следовательно, зависимость снижается, что приводит к более надежному веб-приложению.
- Сетевой трафик значительно снижается и, как следствие, перегрузка сети.
Недостатки:
- В случае отсутствия надлежащего обновления прокси в приложении могут существовать устаревшие данные.
- Реализация кэша увеличивает сложность, поскольку очистка кэша является абсолютной необходимостью.
Примеры
Давайте обсудим примеры кеша Flask.
Пример №1
Установка расширения кэша Flask через любой терминал
Синтаксис:
pip install Flask-Caching
Вывод:
Пример №2
Импорт модуля кэша Flask в код Python:
Синтаксис:
from flask import Flask from flask_caching import Cache cache = Cache(config={'CACHE_TYPE': 'simple'})
Вывод:
Заключение
В этой статье мы рассмотрели все тонкости кэша Flask, и есть одна особенность, объясняющая, зачем нам нужен кэш Flask, заключается в том, что микрофреймворк Flask не имеет встроенной функции кэширования и, следовательно, требование этой утилиты! Учитывая перечисленные преимущества и недостатки, принятие решения об использовании наверняка будет полезным.