Patterns API: maybe cache/direct to proper upstreams

https://api.wordpress.org/patterns/1.0/ will start to receive increased GET API requests following Gutenberg PR 28800 being merged, and ultimately being used in WordPress 5.8.

I’m unsure what the request load will be to this endpoint, or how varied the requests will be at this stage, so just flagging this early for attention.

Currently this APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. endpoint is handled by the catchall API upstream pool, it might make sense to shift this into the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. or plugins/themes API pools.

The API currently assumes that it’ll be cached by nginxNGINX NGINX is open source software for web serving, reverse proxying, caching, load balancing, media streaming, and more. It started out as a web server designed for maximum performance and stability. In addition to its HTTP server capabilities, NGINX can also function as a proxy server for email (IMAP, POP3, and SMTP) and a reverse proxy and load balancer for HTTP, TCP, and UDP servers. https://www.nginx.com/. (which it’s not), and loads WordPress on every API request. No caching is included at present, other than standard WordPress object caching.
The API only accepts GET requests.

Requests to this endpoint will be all GET and potentially of high volume with similar cacheable responses:

  • GET https://api.wordpress.org/patterns/1.0/?pattern-keywords=11
  • GET https://api.wordpress.org/patterns/1.0/?pattern-categories=1234
  • GET https://api.wordpress.org/patterns/1.0/?search=gallery
  • GET https://api.wordpress.org/patterns/1.0/?pattern-keywords=11&search=gallery
  • GET https://api.wordpress.org/patterns/1.0/?pattern-categories=1234&search=instagram

cc @iandunn

#prio2