Нашел на js, принцип такой: вопрос - ответ, сервер выдает список с id. По id как есть все валится в объект, типа кэша, если юзер еще раз такой же выбор сделает, ну сидит тычет пагу, то скрипт проверяет есть такой id и, если есть - сервер не трогает, берет из свалки, иначе вопрос - ответ - в свалку. В финале рендер
var pop_filters = function(id) {
var filters = JSON.parse(raw_filters[id]);
// clear data list
while (filter_datalist.lastChild)
filter_datalist.removeChild(filter_datalist.lastChild);
for(var i in filters) {
var op = document.createElement('option');
op.value = filters[i];
op = filter_datalist.appendChild(op);
op.appendChild(document.createTextNode(filters[i]));
}
};