Во-первых, зачем тут SQL? SQL как язык запросов к базе.
Имхо, все это намного красивее пишется, если вся страница проектируется в стиле event-driven development. Надо достать определенную сущность? Не вопрос! Генерируем соответствующее событие, а JS реагирующий на событие уже сам понимает нужен ли запрос к серверу или нет. Благодаря этому и синхронизация, и очистка по TTL клиентского кеша, и куча других вещей будут писаться очень просто.
Подробнее о создании кэша для оффлайн приложений можно прочитать тут. А на StackOverflow можно почитать дискуссию о том, какой же метод все таки удобнее.
Не могли бы вы припомнить 2 ссылки, упомянутые в этих предложениях?
Разработка с использованием WEB SQL DB и Local Storage