dada esas dos opciones, creo que la mejor manera es abriendo una conexion y cerrando la conexion en cada pagina que se necesite sacar datos.
Por que?
Porque en el caso de que alguien se quede por 20 minutos viendo una solo pagina, son 20 minutos en que la conexion con la BD queda abierta usando recursos del server haciendo nada.
Si la abres y la cierras por cada pagina que usa la BD, entonces te aseguras que los recursos son utilizados cuando es necesario. Que no son mas que los nanosegundos que se demora la cpu en procesar la pagina