Кеш должен применяться, чтобы снизить нагрузку на базу данных (частота запросов, сложность вычислений) и увеличить скорость отдачи результата с этими данными.
Время жизни кеша надо подбирать по ситуации. Всегда должен быть триггер, по которому старый кеш инвалидируется и кешируются новые данные, чтобы не хранить неправильные. Для очень частых обновлений данных кеш может быть бессмысленным.
2. Отправлять запрос AJAX каждые 10 (?) сек. и обновлять виджеты, не перегружая страницы.
3. Ждать события onmessage в WebSocket и обновлять виджеты, не перегружая страницы, без нужды отправлять запрос каждые 10 сек.