Кэширование на уровне QuerySet в Django
Я пытаюсь получить набор запросов из кэша, но не уверен, есть ли в этом смысл.
У меня есть следующий метод внутри custom queryset:
def queryset_from_cache(self, key: str=None, timeout: int=60):
# Generate a key based on the query.
if key is None:
key = self.__generate_key # ()
# If the cache has the key, return the cached object.
cached_object = cache.get(key, None)
# If the cache doesn't have the key, set the cache, and then return the cached object.
if cached_object is None:
cache.set(key, self, timeout=timeout)
return cached_object
Использование в основном заключается в добавлении его к методу django QuerySet, например:
queryset = MyModel.objects.filter(name__in=["Jane","John"]).queryset_from_cache()
Наконец, мой вопрос:
Будет ли работать такое использование? Или он будет пытаться попасть в базу данных, несмотря ни на что?
Это действительно классная идея, но я не уверен, что вы можете полностью кэшировать объекты... Я думаю, что только атрибуты
Теперь это имеет точку. Grom то, что я вижу из ограниченного кода, который я видел, не знаю, есть ли в этом смысл, если только фильтрация для Джейн и Джона (и только для них) не является очень распространенной. Очень узко. Может просто попробовать кэшировать ВСЕХ пользователей или только отдельных пользователей, и только те атрибуты, которые вам нужны