Можно ли соединиться с бд один раз?
И сервер будет сидеть с открытым соединением и ждать у моря погоды, не зная, не закрыл ли юзер эту страницу вообще?
На самом деле, обращение к базе - не настолько затратная процедура, как поддержка соединения с ней без всякой на то необходимости.
Если я правильно понял вопрос, то обойти создание нового подключения можно с помощью паттерна Singleton.
Выглядит это так:class Db
{
    private $pdo;

    private static $instance;

    private function __construct()
    {
        $dbOptions = (require __DIR__ . '/../../settings/setting.php')['db'];
        
        $this->pdo = new PDO(
            'mysql:host=' . $dbOptions['host'] . ';dbname=' . $dbOptions['dbname'],
            $dbOptions['user'],
            $dbOptions['password']
        );
        $this->pdo->exec('SET NAMES UTF8');
    }

    public static function getInstance(): self
    {
        // если объект подключения не создан и равен NULL
        if (self::$instance === null) {
            // то создается новый объект класса Db;
            self::$instance = new self();
        }
        // если подключение создано, просто возвращаем уже созданное подключение
        return self::$instance;
    }
}
Соответственно и подключение уже будет происходить через:Db::getInstance();