База данных, безусловно, правильный выбор, если вы собираетесь иметь несколько копий настроек (если, скажем, каждый пользователь на вашем сайте может настроить ее).
Сохранение переменных в файл PHP * только хорошая идея, если он не получает информацию из Интернета. Если это так, злоумышленник может экранировать переменную с помощью точки с запятой в кавычках, а затем добавить произвольные команды PHP, что, возможно, хуже, чем внедрение SQL! Упс.
Ваша предложенная настройка кеширования немного странная. Я не говорю, что это не поможет, но я не уверен, что это тоже будет. Компетентная база данных (например, Postgres) будет кэшировать ваши запросы в любом случае, заботясь об этом аспекте настройки производительности.
Способ хранения данных о праве собственности на виджет - через таблицу, назовем ее widget_owners. Каждый столбец будет содержать идентификатор пользователя, идентификатор виджета (важно, если вы хотите, чтобы вы могли отслеживать владение новыми виджетами, не делая уродливых действий с вашей базой данных, чтобы поддерживать его) и любые соответствующие привилегии.