You can also create a Menu Module directly from Pages

This way you are totally independent from Joomla + the menu module is also part of Pages' Cache

You can find a snippet to render menus here:

$items = collection('menus', ['type' => $type ?? 'mainmenu', 'level' => $level ?? null, 'recurse' => 'true'])

Pages has a special menu collection for Joomla, allows you to fetch and render menu items, does mean you cannot use the menu modules, but that is not really much of an issue. You actually get more control that way.

Because this data is coming in through a pages collection, the cache would just work.

So you could replace your menu, which is now rendered by a menu module with the above snippet, use the menu collection, and put it all in a partial and your good to go