Four Key Reasons to Learn Markdown
Back-End Leveling UpWriting documentation is fun—really, really fun. I know some engineers may disagree with me, but as a technical writer, creating quality documentation that will...
I just wanted to post a quick note to anyone searching for problems with Rails Page Caching with Apache.
We just helped a client through a tricky issue that manifested itself through some strangely generated cached files.
A visit to the resource:
http://example.com/articles
Would correctly generate the page:
/path/to/app/public/articles.html
Subsequent visits would load the cached page.
However, if you then tried to visit a page like:
http://example.com/articles/2
Where a route used that for pagination, or simply any action off that resource, you apache would try and request a file like:
/path/to/app/public/articles.html/2.html
This is problematic, and does not work.
If, however, you removed the cached file and instead created the directory first, like so:
/path/to/app/public/articles/
When you requested the resource:
http://example.com/articles
it would correctly generate an index file:
/path/to/app/public/articles/index.html
And then correctly generate any cached pages inside the directory like 2.html, 3.html for pagination (if setup in rails routes correctly).
The problem was that Apache has the MultiViews option turned on.
We changed the server configuration file from this:
<Location />
Options All FollowSymLinks MultiViews -Indexes
</Location>
to this:
<Location />
Options All FollowSymLinks -Indexes
</Location>
When you remove this option from the configuration, you get the correct caching behavior, which is that requests to:
http://example.com/articles
Still generate the cached file:
/path/to/app/public/articles/index.html
But now, requests to the slash-ending url and resources off that route:
http://example.com/articles/ http://example.com/articles/2
Now correctly generate a folder with an index.html and 2.html, which caches just fine.
I hope this helps someone else out!
Writing documentation is fun—really, really fun. I know some engineers may disagree with me, but as a technical writer, creating quality documentation that will...
Humanity has come a long way in its technological journey. We have reached the cusp of an age in which the concepts we have...
Go 1.18 has finally landed, and with it comes its own flavor of generics. In a previous post, we went over the accepted proposal and dove...