по поводу информации в кэше: у тебя получается, что каждое поле запоминается отдельно в localStorage отдельно. не очень хорошо, так как быстро загрязняется localStorage.