Skip to main content

Easily make your Wagtail StreamBlock cacheable

Project description

https://travis-ci.org/AccordBox/wagtail_cache_block.svg?branch=master

wagtail_cache_block

This project add HTML fragment cache to your StreamField block in easy way

Background

In Wagtail community, it is popular to use the HTML fragment cache at page level.

This works fine in most of the time. But what if some different page have the same block data and some DB query need be run multiple times when rendering?

In this case, it make sense to make HTML fragment cache work on block level instead of page level.

How it works

  1. cache_block is very similar with Django {% cache %} templatetag, it would pull data from block automatically and use the value to generate fragment cache key.

  2. If value in any block field has changed, new fragment key would be generated and new HTML fragment code would be saved to Cache.

  3. cache_block would check if the page is preview mode, if the page if in preview mode, the HTML fragment cache would not be pulled from cache.

I have used it in my projects and the performance has been improved, especially for some page which contains many db query.

Quickstart

Install wagtail_cache_block:

pip install wagtail_cache_block

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'wagtail_cache_block.apps.WagtailCacheBlockConfig',
    ...
)

You can use it in StreamField for loop iteration

Here 300 is the cache timeout, page is Wagtail page instance, and block is the StreamField block.

{% load wagtailcore_tags cache_block_tags %}

{% for block in page.body %}
  {% cache_block 300 page block %}
    {% include_block block %}
  {% endcache_block %}
{% endfor %}

Or you can use it in block template (For example: StructBlock)

{% load wagtailcore_tags cache_block_tags %}

{% cache_block 300 page block %}
  <section class="{{ block.block_type }}">

    {{ block.value.heading }}
    {{ block.value.paragraph }}

  </section>
{% endcache_block %}

History

0.1.0 (2020-01-19)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wagtail_cache_block-0.1.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wagtail_cache_block-0.1.0-py2.py3-none-any.whl (6.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file wagtail_cache_block-0.1.0.tar.gz.

File metadata

  • Download URL: wagtail_cache_block-0.1.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for wagtail_cache_block-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b7e93cae13f49d50499af2dae92b5bc1cfee689c1f0bb96654d6e61f36fdf793
MD5 31baaff8eb4e9b0a41ed4fecf193d811
BLAKE2b-256 eb46e40605395076bcb49db39aa849f8508e1ebd85c242eb4faefaa2ed64ac17

See more details on using hashes here.

File details

Details for the file wagtail_cache_block-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for wagtail_cache_block-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 90f6d4b9f0d476e9e2db14d7aea2575bb0a9ad9a8c81d4005332e0785c2b8950
MD5 c33c4b0525dd1908f3f203986674dcb7
BLAKE2b-256 dde28a285a2c379e7dd3ab0e9cc8642e7c708c76f83c6f8b77c0c186bf893317

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page