background preloader


As of July 2012[update], the group developing SPDY has stated publicly that it is working toward standardisation (available as an Internet Draft).[3] The first draft of HTTP 2.0 is using SPDY as the working base for its specification draft and editing.[4] Design[edit] The goal of SPDY is to reduce web page load time.[9] This is achieved by prioritizing and multiplexing the transfer of web page subresources so that only one connection per client is required.[1][10] TLS encryption is nearly ubiquitous in SPDY implementations, and transmission headers are gzip- or DEFLATE-compressed by design[11] (in contrast to HTTP, where the headers are sent as human-readable text). Moreover, servers may hint or even push content instead of awaiting individual requests for each resource of a web page.[12] SPDY requires the use of SSL/TLS (with TLS extension NPN), and does not support operation over plain HTTP. Relation to HTTP[edit] Caching[edit] Protocol support[edit] Protocol versions[edit] See also[edit] Related:  nginx optimization SPDY: An experimental protocol for a faster web Some specific technical goals are: To allow many concurrent HTTP requests to run across a single TCP session.To reduce the bandwidth currently used by HTTP by compressing headers and eliminating unnecessary headers.To define a protocol that is easy to implement and server-efficient. We hope to reduce the complexity of HTTP by cutting down on edge cases and defining easily parsed message formats.To make SSL the underlying transport protocol, for better security and compatibility with existing network infrastructure. Although SSL does introduce a latency penalty, we believe that the long-term future of the web depends on a secure network connection. SPDY design and features SPDY adds a session layer atop of SSL that allows for multiple concurrent, interleaved streams over a single TCP connection. The usual HTTP GET and POST message formats remain the same; however, SPDY specifies a new framing format for encoding and transmitting the data over the wire. Basic features Multiplexed streams

NGINX as a SPDY load balancer for Node.js Recently we wanted to integrate SPDY into our stack at SocialRadar to make requests to our API a bit more speedy (hurr hurr). Particularly for multiple subsequent requests in rapid succession, avoiding that TCP handshake on every request would be quite nice. Android has supported SPDY in its networking library for a little while and iOS added SPDY support in iOS 8 so we could get some nice performance boosts on our two most used platforms. Previously, we had clients connecting via normal HTTPS on port 443 to an Elastic Load Balancer which would handle the SSL negotiation and proxy requests into our backend running Node.js over standard HTTP. However, when we wanted to enable SPDY, we discovered that AWS Elastic Load Balancers don’t support SPDYIn order for SPDY to work optimally, it would need an end-to-end channel[1] So, I set out to find alternatives. Ultimately I settled on using NGINX as it had SPDY proxy support, it’s fast, and it’s relatively easy to configure. Kudos

Detecting touch: it’s the ‘why’, not the ‘how’ One common aspect of making a website or application “mobile friendly” is the inclusion of tweaks, additional functionality or interface elements that are particularly aimed at touchscreens. A very common question from developers is now “How can I detect a touch-capable device?” Feature detection for touch As a result, being able to programmatically detect whether or not a particular browser supports touch interactions involves a very simple feature detection: This snippet works reliably in modern browser, but older versions notoriously had a few quirks and inconsistencies which required jumping through various different detection strategy hoops. If your application is targetting these older browsers, I’d recommend having a look at Modernizr – and in particular its various touch test approaches – which smooths over most of these issues. I noted above that “almost all browsers” support this touch event model. How touch detection is used False assumptions Touch or mouse? Being input-agnostic

Wireshark · Go deep. indutny/node-spdy - GitHub Hardening node.js for production part 2: using nginx to avoid node.js load | Arg! Team Blog This is part 2 of a quasi-series on hardening node.js for production systems (e.g. the Silly Face Society). The previous article covered a process supervisor that creates multiple node.js processes, listening on different ports for load balancing. This article will focus on HTTP: how to lighten the incoming load on node.js processes. Our stack consists of nginx serving external traffic by proxying to upstream node.js processes running express.js. Too much talk. Also available as a gist. Perhaps this code dump isn’t particularly enlightening: I’ll try to step through the config and give pointers on how this balances the express.js code. The nginx <-> node.js link First things first: how can we get nginx to proxy / load balance traffic to our node.js instances? The upstream directive specifies that these two instances work in tandem as an upstream server for nginx. upstream alone is not sufficient – nginx needs to know how and when to route traffic to node. We are almost there.

Developing for Multi-Touch Web Browsers Introduction Les terminaux mobiles comme les smartphones et les tablettes ont, pour la plupart, un écran tactile capacitif qui capture les interactions faites avec les doigts de l'utilisateur. Alors que le web mobile évolue pour permettre des applications toujours plus sophistiquées, les développeurs web ont besoin de prendre en charge ces évènements. Par exemple, un jeu peut exiger de presser plusieurs boutons simultanément, ce qui, dans le contexte d'un écran tactile, implique d'utiliser le multi-touch. Apple a dévoilé son API tactile dans iOS 2.0. Dans cet article, nous plongerons dans l'API tactile fournie par iOS et Android, en explorant quel genre d'applications vous pouvez développer, en détaillant les bonnes pratiques, et en expliquant quelques techniques utiles qui facilitent le développement d'applications tactiles. Évènements tactiles Trois évènements tactiles sont définis dans la spécification et largement implémentés sur les terminaux mobiles : Applications tactiles Démos

ICSI Netalyzr SPDY Tools and Debugging With a new protocol, tools and debugging aids are always in short supply. If you have time to help build additional tools, please do so and feel free to post them here! Debugging tools: Chromeabout:net-internalsThis URL is a magic URL in Chrome which provides data about the chrome network stack. It has been fully updated to enumerate SPDY frames and status.Events Tab: This tab shows network events. Using Node.js with NGINX on Debian Updated by Joseph Dooley Node.js is a JavaScript platform which can serve dynamic, responsive content. JavaScript is usually a client-side, browser language like HTML or CSS. Install and Configure NGINX This guide can be started immediately after terminal login on a new Linode, it’s written for the root user. Install: Start NGINX: Change the working directory to the NGINX sites-available directory: Create a new sites-available file, replacing with your domain or IP address: /etc/nginx/sites-available/ Change the working directory to the NGINX sites-enabled directory: Create a symlink to the new example sites-available file: Remove the default symlink: Load the new NGINX configuration: Create the Directories and HTML Index File NGINX is now configured. Create the /var/www and /var/www/ directories: Change the working directory: Create the HTML index file: /var/www/ Install Node.js and Write a Web Server