Giter Site home page Giter Site logo

cdnperf's Introduction

CDNperf Dependency Status devDependency Status

CDNperf monitors popular CDN sites and graphs this data.

Development

  1. npm install
  2. cd config
  3. cp config.template.js config.js and adjust as needed
  4. npm run build to generate the static site

In order to get some test data to show up, please copy http://www.cdnperf.com/data.json to public/.

Hosting

  1. Set NODE_ENV to 'production' (important as this enables view caching!)
  2. Run the app on top of forever or similar

If you are running on Heroku, remember to set environment variables as documented on config.js. See also their documentation on the topic.

License

MIT. See LICENSE for details.

cdnperf's People

Contributors

bebraw avatar xhmikosr avatar martinkolarik avatar jimaek avatar ashishacharya avatar

Stargazers

Wellington Torrejais da Silva avatar Steffen Zels avatar  avatar Michael Hood avatar Ross Hosman avatar Alexander Behrens avatar Thijs de Zoute avatar João Cunha avatar mike lee avatar Gene Diaz avatar 草依山 avatar Ray Shan avatar Jacob Magnusson avatar Terin Stock avatar Theofilos Papapanagiotou avatar jon avatar Jukka Kinnunen avatar Justin Dorfman avatar  avatar

Watchers

 avatar Michael Bodnarchuk avatar James Cloos avatar  avatar wercker avatar Wellington Torrejais da Silva avatar

cdnperf's Issues

pingdom module may fail

Trace below:

SyntaxError: Unexpected end of input
    at Object.parse (native)
    at Request._callback (/Users/juhovepsalainen/src/github/js/cdnperf/pingdom.js:27:22)
    at Request.self.callback (/Users/juhovepsalainen/src/github/js/cdnperf/node_modules/request/index.js:142:22)
    at Request.EventEmitter.emit (events.js:98:17)
    at Request.<anonymous> (/Users/juhovepsalainen/src/github/js/cdnperf/node_modules/request/index.js:856:14)
    at Request.EventEmitter.emit (events.js:117:20)
    at IncomingMessage.<anonymous> (/Users/juhovepsalainen/src/github/js/cdnperf/node_modules/request/index.js:808:12)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:883:14
    at process._tickCallback (node.js:415:13)

Likely their side returned invalid JSON? Still, shouldn't crash in that case.

Graph in realtime

Implement some way to fetch new data on given interval so that the graph will be updated in realtime (or close).

Create about page

We have to create an "About" page with info like:

  • What is cdnperf
  • Where it gets the data
  • Contact information

Article - "Cool, it works, now what?"

At this article we can presume the user knows something about web optimization and wishes to take it to the next level. Go through various tools and means in this article. Justify by using some numbers as data.

Host static content via nginx?

Hi,

We had a nasty crash due to a Node.js bug. Fortunately it has been fixed. Moving on to a newer version should fix it.

Given the primary task of Node.js is to poll Pingdom, perhaps it would make sense to serve the static content some other way. @jimaek What would you think of serving it via Nginx?

I'm not familiar with the configuration required. I can, however, render out the templates as static content quite easily.

More historic data

For example add 180 days and then add the option to list by month.
Once we have enough data then add option to list by year

Integrate Bugira

It would be useful to have the widget there so we can get some feedback.

Convert names to links

Until we have dedicated pages for each CDN how about we link the names to the websites of each CDN?

Trigger cronjob twice a day

Now it's just once. Might as well make it configurable while at it (through env so we don't need to restart the server, check out if this works!).

Implement a logo

Sketch out a simple logo (futuristic style, webfonts?) and integrate it to the site.

Add duration filters

There should be duration filters (30d, 7d, 1d) that allow the user to display different amount of data. Store separate JSON for each and then load it dynamically. Part of the data can be discarded. Maybe 20 datapoints per provider is enough.

Show tooltips on legend

The tooltips should show extra information on table items in the way we're doing with the charts.

Version 1.0

This milestone contains tasks we should aim to finish before the official release.

RUM data

Real User Monitoring

"Why not let website visitors make your measurements by loading the JavaScript files from the CDNs in the background?"

Basic API

Create basic API. This way anybody could use our data to create infographics, banners, show the uptime on his page...

Show analytics for an entire year

The backend needs to be reworked for this to happen. We will need to split it up in two parts: init and update. init constructs the data based on Pingdom data (max. a year). update is something that is run by a cronjob and that constructs partial days.

The output should look something like this:

  • day 1
  • day 2
  • ...

Where each day contains averages for each categories of each CDN.

This data is then aggregated to a JSON that the frontend then renders as usual.

How to deal with longer ranges and math?

Let's say you want to show 90 days worth of data. Now it picks 30 days out of those. Unfortunately there's a side effect. It skips some data that could be relevant. Perhaps we would be better off by using the contribution of the neighboring days somehow as well?

Any idea on this @jimaek?

Cache Pingdom data

As it doesn't make sense to fetch data from Pingdom for each request, cache it instead. For now just store it into some JSON file accessible via public. That way it is very easy to refer to the data via JS.

Minify and concat CSS

Minifying and concatenating CSS should help to cut down the amount of requests needed.

Integrate Google Analytics

Add GA code to "layout" view. It might make sense to inject the GA id through a configuration parameter.

Minify JavaScript

This should help with the performance somewhat. Some content (ie. jQuery and Backbone) could be served from some CDN.

Convert uptime to minutes

When hovering on the percentage on the right show a tooltip of the uptime converted to minutes/hours/days.

Article - "Why should I care?"

Write an article about "why should you care about using CDNs". The idea is to explain the topic to a complete beginner and show some basic benefits.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.