SpeoReportPerformance reduces repeated work when opening large, flat monthly page URL reports in Matomo On-Premise. It caches a neutral flat report base and selected report pages, then lets Matomo calculate the current presentation.

The accelerated path applies to a single-site Actions.getPageUrls request with period=month, flat=1, no segment and a requested limit of 1–1000 rows. Other reports, unsupported request shapes and full exports use Matomo's normal processing. The plugin does not shorten a report to meet a time target.

Access is checked on every request. Cache entries follow the archive's publication and invalidation markers; user-specific pages are separated by login. No Matomo core or vendor file is changed.

The plugin is used in production at Speo. It requires Matomo On-Premise 5.14.2 or later within Matomo 5 and PHP 8.4 or later. Redis can share cached work between PHP processes through Matomo's existing cache backend.

The plugin caches eligible single-site, unsegmented, flat monthly Actions.getPageUrls reports with a requested limit of 1–1000 rows. Matomo handles other request shapes normally.

Which reports can it speed up?

The accelerated path handles one site's flat monthly page URL report (Actions.getPageUrls, period=month, flat=1), without a segment and with a requested limit of 1–1000 rows. Other report shapes, full exports and unsupported extension combinations use Matomo's normal processing. The plugin does not truncate report data to make a request faster.

Is the first request faster too?

A new archive revision needs a new report base. A new user, page or search may also need presentation work before it can be reused. Optional warmup rebuilds recently used neutral bases; it does not precompute every request. Measure the same report before and after caching rather than expecting a fixed loading time.

Do I have to install Redis?

The plugin uses Matomo's configured lazy cache backend and has no Redis credentials of its own. Redis is recommended when several PHP processes or application nodes need to reuse cached reports. Configure and protect it through Matomo; the plugin does not install or tune a cache server. See configuration.

Are permissions and report data protected?

The current user's site permission and Matomo's retention decision are checked before a foreground cache read. Finished pages are separated by login; revision checks prevent reuse after normal archive publication or invalidation. Protect cache storage and backups as report data. The plugin sends no telemetry. See security and report data.

Can I stop normal Matomo archiving?

No. The plugin reuses archived reports and needs Matomo's normal archive schedule. Its optional warmup command complements that schedule. It does not replace archiving, rewrite archives or migrate the database.

Does it modify Matomo or require a particular deployment type?

No core or vendor file is changed. The supported deployment is Matomo On-Premise 5.14.2 or later within Matomo 5, with PHP 8.4 or later and Matomo's required extensions plus zlib. Matomo for WordPress and Matomo 6 are not declared supported. Remaining native implementation dependencies are disclosed in compatibility; this is not a claim of complete independence from Matomo internals.

How do I report an issue?

Use the GitHub issue tracker with synthetic data and the affected Matomo, PHP and plugin versions. Follow the private security reporting instructions for security concerns or identifying report data. Never upload customer reports, tokens or cache contents to a public issue.

Free Download for Matomo On-Premise This plugin is not available for Matomo for WordPress

Please share