Search and "similar" requests are not cached, flooding the Vragen.ai backend
Every search and "more like this" execution issues an HTTP request to the Vragen.ai API. Production access logs show large volumes of *identical* requests because nothing caches the results.
This is often assumed to be handled by Search API cache tags, but it isn't: the `search_api_list:<index>` tag only *invalidates* cached output — it never causes caching. Search API's only result caching is the Views cache plugins (`search_api_tag`/`search_api_time`), and no View is bound to the `vragen_ai` index (the faceted search runs programmatically), so that layer never applies.
### Fix
Read-through caching in `Client::search()` / `Client::similar()`, keyed on the full request params, stored in Drupal's cache backend:
- TTL-only invalidation; the TTL is the maximum staleness window.
- Configurable via the backend settings object (`search_cache_ttl`, default 3600s, no UI form field).
- Reuses the existing `search_api_vragen_ai_client:<cacheKey>` cache tag.
- Proven by a unit test: identical query twice → one underlying API call.
issue