“Why won’t my profile picture update?!!” Finding out the reasons why.

tforia
3 min readNov 19, 2017

--

Very important matter…

I have a ton of questions about the internet and its workings and I’m lucky to have an IT specialist in residence.

Today’s PRESSING question: “why do certain apps take extra time to update a profile picture?”

Apps deliver their service through a distributed system of servers. Servers are things where the program of the app is stored. How the page displays, the order, how a user submits registration info, how the buttons interact and where they lead, the animation that gets triggered on the like button…all these processes are stored in servers.

There are multiple servers available to deliver the app to users across a geographical expanse. A server located near Chicago will provide the app service for people located in the midwest while another server in LA serves people on the West Coast faster. Having many servers in different regions allows the app to deliver it’s utility.

When one user updates a new profile picture, that change needs to be replicated across the other servers in the network. It may take time for the change to update on the other servers.

But Facebook and Instagram do it immediately. So why can’t all apps update my profile image right after I upload? I used to have problems with that on Twitter. Long wait before a new photo would show up on my Twitter page on my desktop and within the app. There are also many other apps where there is also a wait.

Depending on how many servers an app has, it might take longer to propagate. If a service has 4 servers, they just need to send that update to 4 servers. Many networks have dozens, hundreds more.

I typically see this issue on lower budget apps (other than Twitter). Why might this be the case?

Each server is a machine that has limited utilization. A lower budget app is most likely using up more utilization per server. They can’t afford to have as many servers so there are more activities that need to be processed per server.

Updating a profile image is one activity among many. Registering a new user or posting a comment are also activities that a server processes. If there are thousands of users interacting with an app, there are often priorities set. Processing new user registrations might come before updating an existing user’s profile image, if the two were requested at around the same time. A user will see latency because it’s not going to be updated until the server can be utilized to do so.

Another explanation for the delay would be caching. What functions and displays on an app requires calculations. More calculations cost more for the app company. So if an app is up-to-date all the time, refreshed constantly, the servers are recalculating far more frequently.

However, it’s not that necessary to update everything all the time. There are portions of the app that aren’t changed. Then there are portions that need to have less latency — like messages or likes where users need to see updates in real time.

An app will save money by recalculating less. They set an expiration time for the cache, for example, wait 1 minute before refreshing. The cache is updated only after it expires.

Perhaps the apps that don’t update as fast have a cache that expires longer. It won’t update the new profile image until later. It would save on costs because they’re recalculating less frequently.

A lot of apps, Facebook included, use CDNs (Content Distribution Networks). They are similar to distributed cache. Apps don’t deploy programs on CDNs. CDNs distribute content: html, css, js and images.

CDNs also have a propagation problem because they update similarly to the distributed servers. There are companies that specifically address this issue.

Apps typically use both their own distributed system of servers in addition to a CDN.

Okay…I’m still not satisfied. Why can’t apps make their systems work so my picture updates immediately?!

--

--

tforia
tforia

Written by tforia

starting to love how things are never as they seem

No responses yet