As of July 2012[update], the group developing SPDY has stated publicly that it is working toward standardisation (available as an Internet Draft). The first draft of HTTP 2.0 is using SPDY as the working base for its specification draft and editing. Design The goal of SPDY is to reduce web page load time. This is achieved by prioritizing and multiplexing the transfer of web page subresources so that only one connection per client is required. TLS encryption is nearly ubiquitous in SPDY implementations, and transmission headers are gzip- or DEFLATE-compressed by design (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. SPDY requires the use of SSL/TLS (with TLS extension NPN), and does not support operation over plain HTTP. Relation to HTTP Caching Protocol support Protocol versions See also
Related: nginx optimization
www.xplot.orgSPDY: An experimental protocol for a faster webSome 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.jsRecently 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 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 - GitHubHardening node.js for production part 2: using nginx to avoid node.js load | Arg! Team BlogThis 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 BrowsersIntroduction 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