Hi, @spiralstack. I think I’m missing something here and so have some questions. Please know I’m only trying to understand this solution, not to criticize it.
First, some background: Netlify was designed with the Jamstack design philosophy in mind:
One of the design choices there is not to do server-side rendering of HTML at browse time. Instead, the HTML is build once during a site build process. After the site is deployed, the pre-built HTML is served as static content. When the HTTP request occurs, there is no server-side rendering - just a static file server sending the pre-built HTML.
However, if you have a site with many hundreds of thousands of pages, many of which are never visited between deploys, there can be a build time savings by not pre-building those pages. Why build 200K pages every deploy when typically only 1K high traffic URLS are typically viewed between deploys.
There is still an edge case of when one of the 199K rarely used pages is requested: there must be some browse time way to render the HTML. For those instances, the on-demand builder (ODB) function would render the HTML.
The URLs you are asking about don’t seem to be low traffic, but that could be because they are just examples and you are keeping things simple. For high traffic URLs, the jamstack approach would be to turn the GET data in into paths and then pre-build those pages to static HTML during the build itself.
It also becomes possible to use the ODB caching if the GET data is modified to be part of the path. For example, if you made a call to the ODB function for these three URLs, only the first request made would be cached:
https://www.example.com/shoes
https://www.example.com/shoes?brand=nike
https://www.example.com/shoes?brand=adidas
However, if you changes those URLs to this:
https://www.example.com/shoes
https://www.example.com/shoes/brand/nike
https://www.example.com/shoes/brand/adidas
then the ODB function would cache each one independently.
I don’t know if the Remix framework is dogmatic about how query data is parsed. Is changing the format of the URL as described above possible?