Najpierw trzeba zmniejszyć obrazki do rozmiaru (wysokość,szerokość) w jakim mają się wyświetlać na stronie. Potem należało by je dobrze skompresować - sprawdzić czy będzie zajmowało mniej miejsca jako JPG czy PNG. Do tego można też wykorzystać programy lub strony do optymalizacji obrazków np. https://tinypng.com/
Skompresować można też pliki CSS i JS - http://yui.github.io/yuicompressor/
Można też wczytywane pliki JS sklejać w jeden plik aby nie musiało się wiele razy odwoływać do serwera.
Jeśli korzystasz z takich bibliotek jak jQuery to zamiast umieszczać ją na swoim serwerze podać w pliku HTML aby ściągała go z z serwerów typu CDN - https://cdnjs.com/
Gdyby była taka możliwość to tak skonfigurować serwer aby dla obrazków wysyłał też informację, że przeglądarka ma je przechowywać w podręcznej pamięci przez wiele miesięcy zamiast za każdym razem pobierać z serwera.
Podobnie można z plikami JS i CSS.
Można użyć skryptu JS, który będzie doczytywał zdjęcia dopiero gdy zawartość okno zostanie przewinięte do tego zdjęcia.
Podzielić stronę na kilka mniejszych.