Project

General

Profile

Design Notes » History » Version 5

« Previous - Version 5/13 (diff) - Next » - Current version
Luke Murphey, 03/10/2016 06:56 AM


Design Notes

AJAX content loading caching system

The content for the reading pages is cached in order to reduce the loading time of the chapters. This is necessary because rendering is expensive. This works by:

  1. Caching the current page on the server
  2. Pre-loading the next page so that it is pre-cached

The way that this works is that the template for the page will only return the non-content part of the page if the request is not an AJAX request. This will not be cached.

On the other hand. if the request is for an AJAX request, then only the content part of the page will be returned. This will be cached.

ajaxify: what does it do?

The ajaxify decorator changes the page that will be returned such that it is a shell that will request the actual page. This is useful in order to show content to a user quickly with a progress-bar instead of showing a white screen while the content is prepared.

How the type-ahead system in the search works

  1. The search-query uses the Bootstrap type-ahead component to invoke a call to get_works_search_typeahead_hints()
  2. get_works_search_typeahead_hints() obtains the type-ahead hints for Bootstrap
  3. On submitting the search query, jump_to_searched_text() will be used to jump directly to the matching work

How are related works identified in the importer?

The RelatedWork model function autodiscover() attempts to find related works and link them. It considers them comparable when:
  1. The number of authors are the same and the authors names are the same and in the same order
  2. The number of editors are the same and the editors names are the same and in the same order
  3. The divisions are the same (same number of them and the descriptors are the same and in the same order)

How search indexes get re-populated

There is a built-in command to re-index works. For example:

python manage.py make_search_indexes -w lxx

If you want to clear the existing index for a work before indexing it, then include the -f option:

python manage.py make_search_indexes -f -w lxx

You can clear the index entirely with:

python manage.py make_search_indexes -c

You can re-create the index entirely with:

python manage.py make_search_indexes