Django template fragment caching - is it possible to prerender?










0















I am looking into Django caching mechanism, namely template fragment caching.
I am planning to cache list of books for every institute, because it takes too long to fetch it and render on every request. I plan to use it like this:



% load cache %
% cache 600 sidebar student.institute %
<List of books for the institute>
% endcache %


If I understand correctly, it will work like this:
For the first request from a student from the institute the list of books will be fetched and rendered, but for all subsequent requests it will be just taken from cache, till the cache invalidates.
So the first request after invalidation is always slow.
Is it possible to automatically pre-fetch and pre-render this template fragment for all possible institutes, so that even the first request would just hit the cache?










share|improve this question






















  • For now I've come up with two ideas: 1) Use Celery or other async task scheduler to add the cache manually using low-level cache API 2) Use Celery or other async task scheduler to just imitate requests I need to cache Both of the solutions are not optimal. I still hope to find some better way to do it.

    – Alexander Abdulov
    Nov 15 '18 at 2:54
















0















I am looking into Django caching mechanism, namely template fragment caching.
I am planning to cache list of books for every institute, because it takes too long to fetch it and render on every request. I plan to use it like this:



% load cache %
% cache 600 sidebar student.institute %
<List of books for the institute>
% endcache %


If I understand correctly, it will work like this:
For the first request from a student from the institute the list of books will be fetched and rendered, but for all subsequent requests it will be just taken from cache, till the cache invalidates.
So the first request after invalidation is always slow.
Is it possible to automatically pre-fetch and pre-render this template fragment for all possible institutes, so that even the first request would just hit the cache?










share|improve this question






















  • For now I've come up with two ideas: 1) Use Celery or other async task scheduler to add the cache manually using low-level cache API 2) Use Celery or other async task scheduler to just imitate requests I need to cache Both of the solutions are not optimal. I still hope to find some better way to do it.

    – Alexander Abdulov
    Nov 15 '18 at 2:54














0












0








0








I am looking into Django caching mechanism, namely template fragment caching.
I am planning to cache list of books for every institute, because it takes too long to fetch it and render on every request. I plan to use it like this:



% load cache %
% cache 600 sidebar student.institute %
<List of books for the institute>
% endcache %


If I understand correctly, it will work like this:
For the first request from a student from the institute the list of books will be fetched and rendered, but for all subsequent requests it will be just taken from cache, till the cache invalidates.
So the first request after invalidation is always slow.
Is it possible to automatically pre-fetch and pre-render this template fragment for all possible institutes, so that even the first request would just hit the cache?










share|improve this question














I am looking into Django caching mechanism, namely template fragment caching.
I am planning to cache list of books for every institute, because it takes too long to fetch it and render on every request. I plan to use it like this:



% load cache %
% cache 600 sidebar student.institute %
<List of books for the institute>
% endcache %


If I understand correctly, it will work like this:
For the first request from a student from the institute the list of books will be fetched and rendered, but for all subsequent requests it will be just taken from cache, till the cache invalidates.
So the first request after invalidation is always slow.
Is it possible to automatically pre-fetch and pre-render this template fragment for all possible institutes, so that even the first request would just hit the cache?







django django-templates django-cache






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 14 '18 at 13:28









Alexander AbdulovAlexander Abdulov

83




83












  • For now I've come up with two ideas: 1) Use Celery or other async task scheduler to add the cache manually using low-level cache API 2) Use Celery or other async task scheduler to just imitate requests I need to cache Both of the solutions are not optimal. I still hope to find some better way to do it.

    – Alexander Abdulov
    Nov 15 '18 at 2:54


















  • For now I've come up with two ideas: 1) Use Celery or other async task scheduler to add the cache manually using low-level cache API 2) Use Celery or other async task scheduler to just imitate requests I need to cache Both of the solutions are not optimal. I still hope to find some better way to do it.

    – Alexander Abdulov
    Nov 15 '18 at 2:54

















For now I've come up with two ideas: 1) Use Celery or other async task scheduler to add the cache manually using low-level cache API 2) Use Celery or other async task scheduler to just imitate requests I need to cache Both of the solutions are not optimal. I still hope to find some better way to do it.

– Alexander Abdulov
Nov 15 '18 at 2:54






For now I've come up with two ideas: 1) Use Celery or other async task scheduler to add the cache manually using low-level cache API 2) Use Celery or other async task scheduler to just imitate requests I need to cache Both of the solutions are not optimal. I still hope to find some better way to do it.

– Alexander Abdulov
Nov 15 '18 at 2:54













0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53301357%2fdjango-template-fragment-caching-is-it-possible-to-prerender%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53301357%2fdjango-template-fragment-caching-is-it-possible-to-prerender%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Top Tejano songwriter Luis Silva dead of heart attack at 64

ReactJS Fetched API data displays live - need Data displayed static

Evgeni Malkin