При использовании Smarty в кластерном режиме на нескольких серверах и при большой нагрузке от абонентов, вы можете столкнуться с необходимостью сокращения объема хранимых данных в Redis и снижения нагрузки на сеть при передаче данных между серверами Redis и Smarty.
Smarty позволяет сжимать данные при сохранении в кеш. Это может сократить размер данных и трафик вдвое.
Для включения сжатия необходимо добавить в секцию CACHES OPTIONS параметр COMPRESSOR, пример:
CACHES = {
"default": {
"BACKEND": "core.cache.backends.RedisCache",
"LOCATION": "redis://10.0.0.1:7000/0",
"OPTIONS": {
"COMPRESSOR": "django_redis.compressors.zlib.ZlibCompressor",
"REDIS_CLIENT_CLASS": "rediscluster.client.RedisCluster",
"REDIS_CLIENT_KWARGS": { "read_from_replicas": True },
"CONNECTION_POOL_CLASS": "core.cache.cluster_connection.ClusterConnectionPool",
"CONNECTION_POOL_KWARGS": {
"startup_nodes": [
{"host": "10.0.0.1", "port": "7000", "server_type": "master"},
{"host": "10.0.0.1", "port": "7000", "server_type": "slave"},
{"host": "10.0.0.1", "port": "7000", "server_type": "slave"}
]
}
}
}
}
Использование компрессии данных может незначительно увеличить нагрузку на CPU.