All Projects → jpvincent → Requesttracker

jpvincent / Requesttracker

Track when your users get your HTTP requests

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Requesttracker

Nemetric
前端性能指标的监控,采集以及上报。用于测量第一个dom生成的时间(FP/FCP/LCP)、用户最早可操作时间(fid|tti)和组件的生命周期性能,,网络状况以及资源大小等等。向监控后台报告实际用户测量值。
Stars: ✭ 145 (+1015.38%)
Mutual labels:  performance-monitoring, webperf
Speedtracker
📉 Visualisation layer and data store for SpeedTracker
Stars: ✭ 482 (+3607.69%)
Mutual labels:  performance-monitoring, webperf
dashboard.sitespeed.io
Example how to use sitespeed.io to monitor the performance of your web site
Stars: ✭ 43 (+230.77%)
Mutual labels:  performance-monitoring, webperf
performance-budget-plugin
Perfromance budget plugin for Webpack (https://webpack.js.org/)
Stars: ✭ 65 (+400%)
Mutual labels:  performance-monitoring, webperf
Automon
Automon combines the power of AOP (AspectJ) with monitoring or logging tools you already use to declaratively monitor your Java code, the JDK, and 3rd party libraries.
Stars: ✭ 548 (+4115.38%)
Mutual labels:  performance-monitoring
App perf
Open source application performance monitoring tool with emphasis on ease of setup and use. Providing similar functionality like NewRelic/AppNeta/Skylight etc.
Stars: ✭ 353 (+2615.38%)
Mutual labels:  performance-monitoring
Robot Shop
Sample microservices application for playing with
Stars: ✭ 316 (+2330.77%)
Mutual labels:  performance-monitoring
Falco
Falco helps you monitor, analyze, and optimize your websites.
Stars: ✭ 752 (+5684.62%)
Mutual labels:  performance-monitoring
Watchdoginspector
Shows your current framerate (fps) in the status bar of your iOS app
Stars: ✭ 497 (+3723.08%)
Mutual labels:  performance-monitoring
Holy Lance
A Linux Resource / Performance Monitor based on PHP.
Stars: ✭ 311 (+2292.31%)
Mutual labels:  performance-monitoring
Processhacker
A free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware.
Stars: ✭ 6,285 (+48246.15%)
Mutual labels:  performance-monitoring
Tufte
Simple profiling and performance monitoring for Clojure/Script
Stars: ✭ 401 (+2984.62%)
Mutual labels:  performance-monitoring
Analyze Css
CSS selectors complexity and performance analyzer
Stars: ✭ 657 (+4953.85%)
Mutual labels:  webperf
Rails performance
Monitor performance of you Rails applications
Stars: ✭ 345 (+2553.85%)
Mutual labels:  performance-monitoring
Spm Agent Mongodb
Sematext Agent for monitoring MongoDB
Stars: ✭ 7 (-46.15%)
Mutual labels:  performance-monitoring
Frontendwingman
Frontend Wingman, Learn frontend faster!
Stars: ✭ 315 (+2323.08%)
Mutual labels:  performance-monitoring
Emberfire
The officially supported adapter for using Firebase with Ember
Stars: ✭ 689 (+5200%)
Mutual labels:  performance-monitoring
Apm Agent Nodejs
Elastic APM Node.js Agent
Stars: ✭ 467 (+3492.31%)
Mutual labels:  performance-monitoring
Sitespeed.io
Sitespeed.io is an open source tool that helps you monitor, analyze and optimize your website speed and performance, based on performance best practices advices from the coach and collecting browser metrics using the Navigation Timing API, User Timings and Visual Metrics (FirstVisualChange, SpeedIndex & LastVisualChange).
Stars: ✭ 4,255 (+32630.77%)
Mutual labels:  webperf
Appmetrics
Node Application Metrics provides a foundational infrastructure for collecting resource and performance monitoring data for Node.js-based applications.
Stars: ✭ 864 (+6546.15%)
Mutual labels:  performance-monitoring

Why ?

requestTracker allows you to :

  • know the time your real users spend on some strategical HTTP requests.
  • know when the user really starts to see important areas of the page

That's useful for :

  • determine the browser time to first paint
  • know when your tracking beacon is really executed (aka, how much users your marketing team misses)
  • know when important images are finally downloaded (aka, when is this images slideshow really seen)
  • know when your styled text is readable, by checking the Font download time

How ?

Using the Performance timeline API to retrieve HTTP requests from the browser. Information given in the callback are a merge of PerformanceEntry and PerformanceResourceTiming.

If the browser does not support the Performance Observer API that allows to be warned every time a request has landed, the fallback is to retrieve the HTTP timeline every few seconds, at DOM ready and when the page is loaded.

For Time to First Paint, we are using two non-standard methods :

Compatibility

Compatible with more than 70% of your users, enough to have realistic data :

  • IE10 and Edge (mobile included)
  • Firefox (mobile included)
  • Chrome (mobile included) and Opera
  • Some versons of the android stock browser

On incompatible browsers, that simply does nothing.

Test

For a demo or to test on your browsers, point to demo/index.html on localhost (not from disk). If you have NodeJS, run npm install then npm test to have a static server mounted on http://localhost:2888/demo.html and open the browser on it (MacOS).

Usage

Installation

Include measuretime.js in your page. It will expose three methods :

  • WPERF.analyzeEntries( RegExp|String , callback)
  • WPERF.startResourceMonitoring( RegExp|String , callback)
  • WPERF.stopResourceMonitoring()

NPM user ? Do this : npm install https://github.com/jpvincent/requestTracker/archive/v2.1.0.tar.gz --save, then the file is in node_modules/request-tracker/measuretime.js.

Examples

Wait for the onload event and know when a certain request has finally arrived.

WPERF.analyzeEntries(
	/main-content\.png/, // give a RegexP object or a string
	function(timingsCollection){ // receive a collection of PerformanceTiming PerformanceResourceTiming objects
		console.log(
			timingsCollection[0].name,
			' arrived after ',
			timingsCollection[0].responseEnd, ' ms'
		);
	});

You know that most of your visitors dont wait for the onload event, so we provide a way to monitor the requests. Eg: Monitor when the main homepage image finally arrives, this time

WPERF.startResourceMonitoring(
	'http://my-host.fr/static/main-content.png', // if a String, must be the exact location
	function(timingsCollection){
		console.log(
			timingsCollection[0].name,
			' arrived after ',
			timingsCollection[0].responseEnd, ' ms'
		);
		WPERF.stopResourceMonitoring();
	});

Don't like the idea of infinite loops running in the browser ? When there is nothing left to monitor, we stop resource monitoring anyway but you can stop monitoring manually, say after onload.

window.addEventListener('load', WPERF.stopResourceMonitoring, false);

On Chrome and IE9+, get the number of milliseconds between the page request and first pixels displayed by using WPERF.getFirstPaintTime(callback). You can then use this number to send it to Google Analytics like that :

WPERF.getFirstPaintTime(function(firstPaintTime) {
	ga('send', 'timing', 'Global figures', 'Time to paint first pixels', firstPaintTime)
})

What to do with those numbers ?

measuretime.js get the HTTP request details : where to send those informations ? tracktime.js is the other script I use by my customers from RUM (Hi, I'm webperf freelancer, why not hire me?). It sends the performance details to a visualization and storage backend, like Google Analytics User Timings or Basilic.

It provides the trackTime() method, with the following arguments and defaults values

trackTime({
  category = 'Global', // {string} in GA, the category name
  subcategory = '', // {string} in GA, the variable
  timing = 0, // {number}, milliseconds  = performance.now() by default
  label = '-', // {string} very optional, allows for more details in the tracking (like the name of the resource tracked)
  probability = 10, // {number}, percentage, between 0 and 100  = will limit the number of reports sent back to your backend
  once = true // {boolean}: set to false if you want to allow tracking multiple time the same triplet (cat/subcat/label)
})

Now you can send the time to first paint value to your backend :

WPERF.getFirstPaintTime(function(firstPaintTime) {
	WPERF.trackTime({
		  category:'Global figures',
		 	subcategory:'Time to paint first pixels', 
		 	timing: firstPaintTime
	})
})

Say you want to know when you users see a styled text, you can monitor the font file and grah times with your backend:

WPERF.startResourceMonitoring(
	/myfont\.woff/,
	function(timingCollection) {
    WPERF.trackTime({
      category: 'Page Load',
      subcategory: 'Main font file',
      label: timingCollection[0].name,
      timing: timingCollection[0].responseEnd
    })
  }
)

If you do not provide the timing argument, we use performance.now(): that is the time since the page has been requested. Additionally we use the standard method performance.mark() who can be catched by powerful tools like WebPageTest.

Say you have a JS video player that provides you an event when the preroll ads starts, you can monitor that simply :

player.addEventListener('ad_start', function(event) {
  WPERF.trackTime({
    category: 'Video',
    subcategory: 'Preroll ads start'
  })
})

You can know when your logo becomes visible, with simply HTML :

 <img src="our-proud-logo.svg" onload="WPERF.trackTime(
        { category: 'Navigation',
          subcategory: 'Logo loaded',
          label: this.src
        })"
  />
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].