Observer

Last update by Elxis Team

Elxis document observation system and cache

Elxis Document has a special observation system that marks the data imported into the site's HEAD section such as stylesheets, javascript files, page title, META data, etc, in a time period. This period begins after calling the beginObserver method and ends when we call the endObserver method of the elxisDocument library.

The observed items can be fetched by using:

eFactory::getDocument()->getObserved();

The returned result is an array of arrays with keys type and contents.


Observer and cache

The observer is directly related to Elxis Cache. How? Well, the observer is a solution Elxis Team gave to a very annoying issue when we cache items. Very often these items needs to put things into the document head section such as stylesheets, css, javascript, etc. If we cache the HTML output of our script and in the next click display it from cache then the cached item will miss its head data (css, js, etc) and the result will be a disaster. The item wont have its custom style or javascript in the head.

When the elxisCache state is 2 (the system is ready to generate/refresh cache) the Observer marks all the data our script puts into the document's head section. When it actually stores the output into the cache it also stores these marked data. So, when our cached file is loaded elxisCache will also put these data back into the document's head!

The best of all is that you have nothing special to do! elxisCache and elxisDocument do all the work automatically (the observation, the save and the restoration). The Observer will restore: CSS files, CSS code blocks, Javascript files, Javascript code, Javascript libraries, Document Ready calls, Link tags, Custom tags and code put in head, page title, page meta description and page meta keywords.


It has been read 4363 times
Exit pages
Previous article
Exit pages
Icon packages
Next article
Icon packages

You are free to copy, distribute and transmit the articles in this site for non-commercial purposes.
Creative Commons 3.0