FAQ

Where can I find Speed Analyzer once it's installed?
Under Dashboard / Speed Analyzer.

How should I interpret the 'Difference in milliseconds'?
Speed Analyzer registers at what time a certain event is triggered. Because of that, it's hard to say how long it took to e.g. render a block. It can only report on what the difference was between two events. However, it's often a pretty good indicator when the time between two events is relatively big. The code in between those events is probably not optimized. Examples of possible problems: An API call to an external server, a loop that creates hundreds of objects, a slow SQL query, etc. If the difference in ms between two events is large, they are colored in red.

What should I do when I find an outlier?
If a Block Type is involved, you could start by removing that block from a page to see if that makes a difference. If that's not possible, you'd have to inspect the code of the Block Type and e.g. disable certain methods in the controller. That is beyond the scope of this FAQ.

Can I run this in production?
Yes, but it's not recommended on high traffic websites, or on the long run. That's because debug information is gathered during the request, and each page will generate a Report. That of course has a slight impact on performance. If you decide to you Speed Analyzer on production, be aware that you don't generate thousands of Reports by accidently keeping Speed Analyzer enabled and having the setting 'Enable overwriting reports' disabled.

Can I use this in combination with Full Page Caching?
Depends, with FPC the HTML is cached and returned on subsequent request. However, PHP is needed to generate reports for Speed Optimizer. If a user is logged in the page will be tracked correctly.


What are Custom events?
Events that are not part of the concrete5 code. E.g. events from other packages, or custom code a developer has added. If you have overridden the Event Dispatcher (see 'Settings' page), all events will be catched by default. You can also trigger your own events, the name of the event doesn't matter and can for example be 'on_before_api_call', 'on_after_api_call'. You'll then see those events back in the reports.


How does the 'on_speed_analyzer_track' event works?
You can use this event for debugging / analysis purposes. E.g. if you want to see how fast a block loads you can add two events to your block controller. There are various ways to fire the event. Some examples:
\Events::dispatch('on_speed_analyzer_track');
\Events::dispatch('on_speed_analyzer_track', new \A3020\SpeedAnalyzer\Events\TrackEvent(['custom payload']));
\Events::dispatch('on_speed_analyzer_track', new \A3020\SpeedAnalyzer\Events\TrackEvent(['Key' => 'Value']));


What do the colors in the Report mean?
They represent the category of an event. Other than that, they have no special meaning. For a list of all concrete5 events, please visit https://documentation.concrete5.org/developers/appendix/full-event-list