For simulation the problem, it's sufficient to point browser to http://localhost:8080/portal/classic and log all HTTP requests sent by browser. It can be seen that HTTP requests for obtain images (*.jpg, *.gif, favicon.ico, ...) are repeated during each HTTP request to portal page and HTTP response contains header "Cache-control: no-cache" for all images.
Problem is caused by incorrect mapping of staticResource handler in controller.xml . StaticResource handler is mapped after PortalRequestHandler, which means that all images are firstly processed by PortalRequestHandler. This is non-sense and it results that incorrect HTTP header "Cache-control: no-cache" is used for images and some non-sense operations are called (like calling DataStorage.getPortalConfig with argument "favicon.ico" ).
Processing by PortalRequestHandler is unsuccessful and so StaticResourceHandler is used after that and images are successfuly returned, but incorrect Cache-control is already set.
Thing is that images should be processed only by StaticResourceHandler and not by PortalRequestHandler at all.