Using ColdFusion as a Static Site Generator

Static site generators (SSGs) are engines that use text input files (such as Markdown, reStructuredText, AsciiDoc and JSON) to generate static web pages.

Static sites generated by static site generators do not require a backend after site generation, making them first-class citizens on content delivery networks (CDNs).

Some of the most popular static site generators are Jekyll, Hugo, Next.js (JavaScript) and Angular (TypeScript). SSGs are typically for rarely-changing, informative content, such as product pages, news websites, (software) documentation, manuals, and blogs.

Mikes Notes

Pipi also has its own static site generator (SSG).

Pipi 2

From 2000 to 2001, Pipi 2 used templates written in Visual Basic and stored in "Backpage", an Access Database, to render thousands of HTML web pages. I did the database design, Matthew Carter wrote the VB, and Graeme Cook gave helpful advice about MS Access. Many separate Access Databases store the data the templates use to create each page.

Pipi 4

From 2005 to 2008, Pipi4 used templates written in ColdFusion CFML code to render 25,000 static HTML pages from data stored in an MS SQL 6 database. Each week, on a Wednesday morning, it took 2 hours to render every page. The logic was stored in a library of 550 class objects.

The book "The Content Management Bible" by Bob Boiko was a great help to me in figuring out how to build the CMS and the rendering engine.





Pipi 9

Now, in Pipi 9, the Pipi 7 CMS has been rebuilt, and CFML templates have been added to automatically create a series of linked Wiki articles (like Wikipedia) that give an overview of each system and subsystem and a set of classically framed "PipiDocs" (a bit like JavaDocs) that drill into the minute detail of each system. 

The Wiki and Docs are also cross-linked. The next stage enables direct editing of the parameters of the underlying systems that the Wiki and Docs then self-document. A reverse loop of sorts.

During testing in October 2023, 1200 static Wiki web pages of 300 systems were rendered in 7 seconds. I was surprised by how fast it was. A significant 500x performance improvement on Pipi 4. 

 


The CFML templates are nested and use a rule engine to determine where, when and how they are used. As in Bob Boiko's book, I use content-type templates. In some ways, it's similar to Jekyll but much more powerful. CFML is straightforward to use and makes for fast prototyping.

No comments:

Post a Comment