Пытаюсь понять, что происходит во время низкоуровневого cache.set () django В частности, подробности о том, какая часть набора запросов сохраняется в memcached.
Во-первых, правильно ли я интерпретирую документы django?
Теперь вопросы о сохранении вещей в memcached в представлении. Допустим, я добавляю что-то вроде этого в верхней части представления:
tournres_qset = cache.get('tournres', None)
if tournres_qset is None:
tournres_qset = TournamentResult.objects.all()
cache.set('tournres', tournres_qset, timeout)
# now start accessing tournres_qset
# ...
Что сохраняется во время кеширования.set ()?
Будет ли сериализован и сохранен весь набор запросов (объект python)?
Поскольку набор запросов еще не использовался для получения каких-либо записей, не является ли это пустой тратой времени, поскольку на самом деле содержимое конкретной записи не сохраняется в кэше памяти? (Любые будущие запросы будут получать объект набора запросов из кэша памяти, который всегда будет запускаться заново, с пустым локальным кешем набора запросов ; доступ к базе данных будет всегда.)
Если указанное выше верно, тогда я должен просто всегда повторно сохранять набор запросов в конце представления, после того, как он использовался во всем vierw для доступа к некоторым записям, что приведет к локальному кешу набора запросов чтобы получать обновления, и какие из них всегда следует повторно сохранять в memcached? Но тогда это всегда приводило к повторной сериализации объекта набора запросов. Вот и все для ускорения.
Или же cache.set () заставляет объект набора запросов выполнять итерацию и обращаться из базы данных ко всем записям, которые также будут сохранены в кэше памяти ? Все будет сохранено, даже если представление обращается только к подмножеству набора запросов?
Я вижу подводные камни во всех направлениях, что заставляет меня думать, что я
неправильно понимаю кучу вещей.
Надеюсь, что это имеет смысл, и ценим пояснения или указатели на некоторые "стандартные" рекомендации. Спасибо.