Thanks! That was the nudge I needed to see the problem from a new angle.
Currently it does all three external fetches within the one operator function, but if I extract some of the logic out to the ez template instead, and put the second and third lookups in a separate function, it will be more efficient overall.
I was trying to imagine taking the caching into the php of the extension, when what I need to do is bring a small portion of the extension logic out to the ez template. I just wasn't thinking about the problem the right way (isn't that always the challenge!)
Unfortunately the approach I thought would work doesn't seem to.
I took out the second two external website lookups and put them into a template fetch function, but I need to be able to access the result of that fetch as a variable later on. If I do this:
...it doesn't work the second time, as the variable $mylist doesn't exist once that block is cached. Does that make sense? I want to cache the result of the fetch, but still be able to access the variable next time that template is used (with a different view parameter). Am I missing something obvious here?