Armazenamento eficiente de uma grande mesa no cache do Django
-
27-10-2019 - |
Pergunta
Eu uso Django com jqGrid e carrego páginas via AJAX.Às vezes, as consultas são muito complexas e o carregamento da página é muito lento, pois as páginas distantes são muito mais lentas (o que era de se esperar, os resultados geralmente excedem 100k objetos).Achei que o cache de resultados resolveria o problema, aumentando o tempo de carregamento da primeira página, mas acelerando fortemente o carregamento das páginas subsequentes.
Em vez disso, tornou o carregamento da primeira página incrivelmente lento e até as páginas subsequentes demoraram muito (11 segundos em um PC padrão).Estou usando o back-end de cache do locmem. Alguma ideia?Eu tentei, para uma comparação, armazenar os resultados no dicionário global e isso foi MUITO melhor (as páginas subsequentes levam apenas 1s), mas ouvi dizer que não é uma maneira segura.
Alguma ideia?
Solução
Você pode tentar aquecer seu cache.Isso pode ser feito manualmente ou usando uma estrutura de enfileiramento como o aipo para que o armazenamento em cache das páginas subsequentes ou querysets aconteça em segundo plano após outro carregamento de página.
Dê uma olhada no johnny-cache, que faz o cache transparente do queryset.Isso pode (repito, pode ) resolver todos os seus problemas.