Hello, MB
I run a classifieds site on the Eta theme (plus the Blog and News plugin). I spent several days analysing its speed with SpeedVitals and HAR files, and honestly I’m frustrated: I had to patch both the theme and the plugin by hand to fix things that, in my opinion, should work properly out of the box. Below is what I found and what I’d like to see in future versions.
1. Assets are loaded wastefully and with duplicates
Swiper, lightGallery and jquery.lazy are loaded from cdnjs instead of being bundled in the theme. Because of this Osclass can’t minify and combine them, and item pages get an extra connection. I moved them into the theme folder myself.
jquery.validate.min.js is added manually in about 10 templates (login, register, password recovery, contact, report, send to friend, etc.), although head.php already enqueues it. On those pages it loads twice.
Blog plugin: its CSS and JS load on all pages, not only on blog pages. Also, the file version is built with date('YmdHis'), so the URL changes every second and these files can never be cached. The plugin also enqueues Font Awesome and lightGallery from a CDN again, although the theme already loads them in the header.
The blog block on the home page requests up to 15 full articles from the database (including locales and comment counts) but shows only 5, and it outputs full-size images (up to 178 KB) in 180×120 cards.
2. Fonts
Why are the fonts kept separately and connected through a separate fonts.css (a render-blocking request) with 88 @font-face blocks for just a few files?
noto-sans-normal-latin-ext.woff2 weighs 168 KB because it includes the whole Latin Extended range.
After my manual changes the home page dropped from 2.04 MB to 1.69 MB in a throttled lab test.
3. AdSense
If the site owner has connected AdSense, the theme knows about it. When the user enables the theme’s banner option “Optimize for AdSense”, why aren’t preconnect and dns-prefetch hints for pagead2.googlesyndication.com and fundingchoicesmessages.google.com added to the head automatically? I have to edit head.php by hand after every update. Please add them automatically when AdSense is configured.
4. SEO plugins (All in One SEO)
I use the All in One SEO plugin, and every template has <title><?php echo meta_title(); ?></title> hardcoded. After every theme update I have to change the title (and the meta tags) by hand in each file. Please:
5. Obsolete meta tags in the head
head.php contains <meta http-equiv="Pragma" content="no-cache">, <meta http-equiv="Cache-Control" content="no-cache" /> and <meta http-equiv="Expires" content="Mon, 01 Jul 1970 00:00:00 GMT" />. Modern browsers ignore them, because caching is controlled by the server’s HTTP headers, not by meta tags. These lines do nothing and only add clutter to the HTML. Please remove them from the theme.
detect known SEO plugins (for example with function_exists('ais_title')) and use their output automatically, or
at least gather title, description, keywords, canonical and robots into one helper function with a filter, for example eta_meta_title(), which calls ais_title() when it is available and meta_title() otherwise. That way everyone can hook in without editing templates.
Thank you!