i had the same problem and i spend two whole days on it, i changed host to VPS but still loading duration is really bad. and I Found Solution
wordpress saves many Junks in database for your statistics, for example Transients (The Transients API is very similar to the Options API but with the added feature of an expiration time, which simplifies the process of using the wp_options database table to temporarily store cached information).

According to this image load time of website is 12.93s but all posts in this site is under 100 posts.
i checked cpanel statistics there is no cpu usage. problem was because of database garbages. MY SQL was working so hard to do some simple query statement. i checked all tables from page 1 to the end. and i found my problem.
in first step check your htaccess enable gzip compression , Leaverage Browsing Cache , and Keep Alive. now open your browser and press F12, choose network tab and refresh your site. as you can see it lates two render your page. first of all check if your CPU usage is high or not. if it is not that much high therefore it`s your database problem. you have as many as garbage info in your tables.
first of all go to phpmyadmin (access your database). and run this SQL statement.
with first Query i deleted 140,000 useless records.
delete FROM wp_options WHERE option_name LIKE '_transient%'
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;
please check your prefix tables.
and after that i cleaned some user metas
Delete * FROM `pb_usermeta` WHERE ....
the load time decreases from 25s to 1.3s.

just remember to backup your system.
cache can help you get out of this situation buttttt you didn`t found answer you deleted it because your site admin still has got this problem and loads lazy.