programming

The Answer to Your Mobile Strategy and Performance Could Simply be…ESI

ESI stands for Edge Side Include and is an XML-based markup language. ESI support is offered by content delivery network (CDN) vendors like Akamai and F5 and also now Varnish (but only a very limited subset). If you use any of these vendors, you have ESI at your disposal. ESI can be used for caching purposes, however, in today’s post I will focus on how it could help you with your mobile strategy and performance.

The W3C states:
“ESI allows for dynamic content assembly at the edge of the network, whether it is in a Content Delivery Network, end-user’s browser, or in a “Reverse Proxy” right next to the origin server.” (http://www.w3.org/TR/esi-lang)

So, let’s pay attention to “dynamic content assembly” in the context of the title’s blog post.

If you are familiar with Server-Side-Include (SSI) and XML/XSLT, you will have no problem understanding ESI. It also supports the same access to variables based on HTTP request attributes, e.g. you can easily check for HTTP_USER_AGENT or HTTP_HEADER. ESI can also include fragments or snippets of additional content via an include command. To make this even more powerful, ESI supports conditional processing, which means logic can be applied to execute specific content <include/>s based on specific conditions, e.g. user agents. All of this is done at the edge; the user will never get content they are not supposed to receive. Additionally, when processing ESI, there is no need to go back to the origin for processing, hence the load at the origin is cut down.

What is (your) Mobile Strategy?

A mobile strategy or approach could range from “We don’t have one”, or “We swear on responsive web design” to “We take mobile very seriously and have dedicated sites”. If you opt for the first statement, please read this and then come back. If you opt for the second or third statement, please continue reading. While there are several options out there to do device detection via PHP or any other server-side language, I’d like to provide several insights on how the same can be achieved with ESI. Similar to other redirect strategies out there, ESI can be used to redirect users to a different site based on the visitor’s user agent. The redirect occurs at the edge and is faster than putting the redirect logic at the origin, hence, you experience performance improvements. ESI is powerful and cheap tool, and your way to a proper mobile device strategy could work by following the steps below.

To continue, please go to my guest post for Stoyan’s perf calendar, December 3: http://calendar.perfplanet.com/2013/esi-mobile-strategy-performance/

asp.net, i think i like windows.

so i have been getting involved more and more in VS2005 lately. i have to say windows is surprising me and is actually making my life really easier when it comes to building web applications. today, i found out about a nice tool to manage displaying different content depending on their role. the role management offered by vs2005 is nice and can be used very easily. It allows me to customize information that will be presented by users through different templages. This is done based on theirs roles.

It’s sometimes recommended to read about the “what’s new”.

Manage user-based content display and user data persistence

confusion with coldfusion

seriously, i don’t know why some people decided to use coldfusion 4.5: right now, i have to understand and enhance somebody’s coldfusion code to make it work for the company i work for. while trying to do that, i realize that most of the functions that i need now to speed up the code, are not available for version 4.5

is there anybody who has a good resource for coldfusion 4.5?

moving forward to more futuristic methods/technologies:
i found a nice one-chapter example of the new series by o’reilly: head rush AJAX.
I really like the style how this serie of books presents its content to the readers: easy, funny and nice to read and understand. I am really thinking of buying it.
Another one I am reading/using is this one:  head first design patterns.