I have been trying to wrap my head around which is a better option for us, they both seem to be very similar. Can you help describe the differences?
A key difference is that Grav is not static. You have all the server side PHP access you might want to power a fully interactive site.
Jekyll renders templates to HTML and then you upload the files. Grav creates PHP/HTML on the fly and caches the results for speedy access for the next call.
One could argue that for sites that are mostly not changing that the static method is the way to go for speedy pages, especially on mobile. I have not tried to maximize grav performance, but default settings and minimal content and it seems leggy to me (perception, no actual measurements). I also wonder if any benchmarking has been done to see how many files and different types of taxonomy structure that grav can handle. Is it hundres, thousands, 10s of thousands of files? What is the realistic upper limit.
Hi @RobG, there are people out there driving Grav to its very limits. 5000 pages are tested, but some are having more than this. There is an open issue addressing questions with large websites, see here for more information’s https://github.com/getgrav/grav/issues/343 . Concerning taxonomy structure I’m unable to give you an exact number, but I guess it will be more than most of the people need for their websites.
although there is no real benchmark out there (how one would implement this?), Grav is very fast: its fastness is IMHO based on it’s low memory usage and a clean core design. In my installs it uses approx. max 15MB of memory (peak!). In comparison with other CMS like Drupal and Wordpress that’s almost nothing.
To be honest, nothing can be faster than using static pages. But you are losing the power of dynamically generated content and the flexibility of Grav, which is an outstanding feature. You just put your markdown file somewhere and Grav is doing the rest. No need to recompile something. Further with some plugins you can make your site searchable, allow c omments and feedback pages, you can filter your content. All what is working out-of-the-box then. If you have a simple site, generating satic pages are a good option (and mostly the better choice). If you need more power or have a lot of pages you may try out and choose the one you most like.
Concerning speed. By default, Grav settings are not optimized for performance. For example CSS and JS are not minimized and not pipe-lined and the output is not transferred gzipped to the browser. For developing these settings are OK, but for a live site you should think about it. Further you may want to use a CDN and there is a plugin for that https://github.com/getgrav/grav-plugin-cdn . And if you want to leverage the full power and combine some advantages of static pages you are maybe interested in the AdvancedPageCache plugin.
What remains are optimizations for your theme, but they are independent of the actual CMS you are using. You of course have to make sure to conform to the guidelines of mobile first, use non-blocking CSS/JS, minify your images etc. But that’s really up to you.
@somerregen Thanks for the very detailed response. I have not discounted Grav yet, just weighing all my options. I was kind of ‘all in on grav’ until I read this article: Why Static Website Generators Are The Next Big Thing and started to have a go at Jekyl. It seems to have plug-ins and as the article mentions you can add things like Search via Swiftype quite easily. The ‘dynamic content’ comes from the compilation of the MD, templates (Liquid). So I think that boils things down to how often do we need to publish content and what the process would be for recompilation. (Thinking out loud here). So now I am leaning towards Jekyl or Metalsmith so that I can get the best of both worlds (authoring via MD, frontmatter for content taxonimy, speed via static pages)
@RobG You hit the head on the nail. It really depends on you often you want to change you content. Static pages and generators are great, but you always need the respective environment to compile all the things (ok, you can host it on GitHub and use a hook. There is definitely something out there ) and concerning search/commenting system etc. you are always relying on 3rd party companies and store data somewhere in an environment you can not control (that’s problematic for security reasons). Also interactivity for static pages happens with JS (meanining client-side). Thus, you always decide on which system the interactivity for the site is realized. Either on the server or on the client. However, Jekyll is great as well as Grav and there exist no system, which is the only one and best. You always have to choose the best suited for your project or your goals.