Caching has been pushed to the org-publish-rss repository for version 0.10. This functionality will save exported HTML content between sessions to save time when generating full content RSS feeds.
The biggest bottleneck when generating full content feeds is exporting every Org file into HTML. Caching that information provides a noticeable speedup between runs as only modified files need to be exported to HTML.
Caching is considered experimental and disabled by default for now.
Please try it out, you can enable caching by setting
org-publish-rss-cache-content:
(setq org-publish-rss-cache-content t)
Please try it out, and please reach out if you encounter bugs.
Cache Implementation
Caching follows the same implementation pattern used in ox-publish.el. For each file during feed generation the file info and HTML is stored in a hash table. Once feed generation is completed the hash table is saved into a file.
The next time org-publish-rss is run for the project the hash table
is loaded into a variable, Each file's timestamps are compared against
what was recorded in the hash table to determine if the cached HTML
can be used. If the timestamps are older than the file's last
modified date then the HTML is re-exported and the hash table is
updated.
The hash table is stored per-project, but more files, or larger files, will result in a bigger hash table. This may lead to a noticeable increase in RAM usage when the hash table is loaded. If you have a project big enough where this causes you problems please let me know. Furthermore, If you have suggestions for improving the memory usage please reach out to me. I am not very familiar with how Emacs handles memory and garbage collection, so any suggestions would be welcomed.
About org-publish-rss.el
org-publish-rss.el is a simple RSS generator for GNU Emacs
Org-mode's built-in publishing functionality.
This package adds new options for controlling RSS generation to the
org-publish-project-alist variable used to define projects (see Org
manual). It adds :auto-rss and other options that work similar to
the existing :auto-sitemap functionality. This should hopefully make
it easy for users to add RSS feeds to existing Org publish websites.
Generative AI Policy
This project was written without the assistance of generative LLM AI models. However, recently I do utilize chatbots for research when I cannot easily find information through appropos, help, manuals, or search results. Unfortunately, web search results are getting so poor it is difficult to avoid utilizing AI chatbots as a resource.
Comments
Email comments to comment@taingram.org.