Blog Sections Open
When phpThumb and Ad Blockers Break Image Previews
How to diagnose image previews disappearing because phpThumb-generated cache names trigger ad blockers, and what to change in thumbnail generation strategy.
After an upgrade, everything can look fine locally and still break on a live site for one simple reason: the browser, an extension, or an image proxy decides a generated thumbnail URL looks like advertising.
That is exactly what can happen with phpThumb-generated preview files. If the generated name contains fragments that ad blockers dislike, the browser can silently hide or block the image even though the file exists.
Typical symptom
- full-size image works
- small preview or teaser image disappears
- clearing Evolution cache alone does not help
- disabling the ad blocker makes the image appear again
Why it happens
Some generated names or query fragments are interpreted as ad-related resources. A preview file with an unfortunate suffix can be enough for the browser extension to intercept it.
What to check
- compare the direct image URL and the generated preview URL
- open the browser network tab with the ad blocker enabled
- confirm whether the block happens only for thumbnail variants
- review phpThumb naming and any ad-block-fix option your project exposes
Practical fixes
- rename the source image if the file name itself is suspicious
- adjust the thumbnail naming strategy
- enable any available ad-block-safe naming option in the image processor
- purge the thumbnail cache after the change
The lesson is simple: when an image fails only on one environment or only in some preview sizes, do not assume the upload is broken. Sometimes the delivery path is the real problem.
Passwordless Login Patterns for Evolution CMS
A best-practices article on passwordless login ideas for Evolution CMS, using existing password-reset style flows as the practical base.
Where to Configure Cache Storage in Evolution CMS
A quick guide to choosing and configuring the cache driver in Evolution CMS, including where the setting lives and when file, Redis, Memcached, or database cache makes sense.