Profile

Cover photo
368 followers|5,466 views
AboutPostsVideos

Stream

Anolim

Shared publicly  - 
 
Avenir Suisse Adventskalender 6. Dezember 2012
: anolim@work
1
Add a comment...

Anolim

Shared publicly  - 
 
+Acquia Congratulations on being named to the Inc. 500 Top 10. This is great news for everybody involved with Drupal.
1
Add a comment...

Anolim

Shared publicly  - 
 
We at Anolim wish all our customers, employees, partners, friends and sponsors a very happy and successful 2012. We look forward to collaborating and working with you on many successful projects.
1
Add a comment...

Anolim

Shared publicly  - 
 
Mark Knichel originally shared:
 
Hi everyone! I’m an engineer on the Google+ infrastructure team. When +Joseph Smarr made an appearance on Ask Me Anything back in July (http://goo.gl/GbdYv), many of you wanted to hear more about Google+'s technology stack. A few of us engineers decided to write a few posts about this topic and share them with you.

This first one has to do with something we take very seriously on the Google+ team: page render speed. We care a lot about performance at Google, and below you'll find 5 techniques we use to speed things up.

1. We <3 Closure

We like Closure. A lot. We use the Closure library, templates, and compiler to render every element on every page in Google+ -- including the JavaScript that powers these pages. But what really helps us go fast is the following:

- Closure templates can be used in both Java and JavaScript to render pages server-side and in the browser. This way, content always appears right away, and we can load JavaScript in the background ("decorating" the page, and hooking up event listeners to elements along the way)

- Closure lets us write JavaScript while still utilizing strict type and error checking, dead code elimination, cross module motion, and many other optimizations

(Visit http://code.google.com/closure/ for more information on Closure)

2. The right JavaScript, at the right time

To help manage the Javascript that powers Google+, we split our code into modules that can be loaded asynchronously from each other. You will only download the minimum amount of Javascript necessary. This is powered by 2 concepts:

- The client contains code to map the history token (the text in the URL that represents what page you are currently on) to the correct Javascript module.

- If the Javascript isn’t loaded yet, any action in the page will block until the necessary Javascript is loaded.

This framework is also the basis for our support for making client side navigates work in Google+ work without reloading the page.

3. Navigating between pages, without refreshing the page

Once the Javascript is loaded, we render all content without going back to the server since it will be much faster. We install a global event listener that listens for clicks on anchor tags. If possible, we convert that click to an in page navigate. However, if we can’t client side render the page, or if you use a middle-click or control-click on the link, we let the browser open the link as normal.

The anchor tags on the page always point to the canonical version of the URL (i.e. if you used HTML5 history for the URL), so you can easily copy/share links from the page.

4. Flushing chunks (of HTML)

We also flush HTML chunks to the client to make the page become visible as soon as the data comes back, without waiting for the whole page to load.

We do this by
- Kicking off all data fetches asynchronously at the start of the request
- Only blocking on the data when we need to render that part of the page

This system also allows us to start loading the CSS, Javascript, images, and other resources as early as possible, making the site faster and feel more responsive.

5. iFrame is our friend

To load our Javascript in parallel and avoid browser blocking behavior (http://goo.gl/lzGq8), we load our Javascript in an iframe at the top of the body tag. Loading it in an iframe adds some complexity to our code (nicely handled through Closure), but the speed boost is worth it.

On a side note, you may have noticed that we load our CSS via a XHR instead of a style tag - that is not for optimization reasons, that’s because we hit Internet Explorer’s max CSS selector limit per stylesheet!

Final Comments

This is just a small glimpse of how stuff works under the covers for Google+ and we hope to write more posts like this in the future. Leave your ideas for us in the comments!
1
Add a comment...
In their circles
62 people
Have them in circles
368 people

Anolim

Shared publicly  - 
1
Add a comment...

Anolim

Shared publicly  - 
 
This article has some excellent tips on how to ensure your online presence actually works for clients and visitors to your site.
1
1
Add a comment...

Anolim

Shared publicly  - 
1
Add a comment...
People
In their circles
62 people
Have them in circles
368 people
Communities
Created by Anolim
View all
Story
Tagline
Web, Mobile and Cloud Solutions for the Enterprise
Introduction
Anolim stands for Absolutely No Limits in web, mobile and cloud technology. We develop web, mobile and cloud solutions for the Enterprise.

Our expertise is in the domain of B2B, asset management, fund management, banking, stock exchanges, trading, media and financial services.

We have experience in solutions for collaboration, B2B communities and portals, distribution channels, enterprise social media, information management etc.

Did you know that the majority of all developed software functionality is never used? Our development methodology is designed to focus on the essentials and deliver quality solutions quickly and efficiently.