How We Can Use Smart Caching to Mitigate Internet Outages

October 21, 2016 was a big day in the cybersecurity field. The Mirai botnet, taking control of unsecure IoT devices, launched a massive DDoS attack against DynDNS, causing people on the East Coast of the US to have no connection to many websites. I remember having connections all morning until late in the evening. This was a major inconvenience to me and definitely has resparked a critical discussion on security and risk mitigation in our society.

While that’s an important discussion, another I’d like to talk about is for users who just can’t connect to watch a movie or play some music. Today, streaming content is used basically everywhere. If we cannot connect to the service, then we are no longer able to access our content. Some services like Plex stream from your local network, but Netflix, YouTube, Spotify, and many others only have data from their networks.

Offline playback is critical to give users some sort of mitigation against network issues, and it’s good for uses like in low-connectivity areas or those without a data connection. To be fair, some services like Netflix give users the ability to download certain videos ahead of time. However, this requires the user to manually select videos to download ahead of time, and we can’t predict when the network is offline. If I cannot connect to Netflix on my Android TV, or Spotify or Hulu then the device is of limited use.

To create a better service for their customers, content providers should include smart caching systems as part of their core offering. These systems would examine user behavior and make smart predictions about what they’d play. This will also require new infrastructure that will be able to handle the increase of Internet demand and cache size.

This has been explored in the past, with Google’s FastPlay for Cast, but it still relies on an Internet connection to stream the entire piece of content.

Making Smart Predictions

If I listen to one or two playlists in a music app, those playlists should be cached offline. That’s really simple. The bigger challenge is trying to predict when I make unusual behaviors like deciding to play a new album or receive a recommendation from a friend. In either of these situations, one should expect the app to still play the desired music.

Can the app determine what new albums I play? If it’s from a artist I listen to frequently, it should be possible to guess that I’d want to listen to this. My user profile should have some knowledge of favorite artists. When new albums are added, the service should intelligently download the songs behind the scenes so it’s ready if I decide to play it.

If I’m using a video service, it’s easy to assume I’ll want to play the next episode or two in a series or the next movie in a trilogy. However, with many services now offering and promoting original content, it would really be unfortunate if I am unable to watch their new promotions. If the first episode of a new series, one it’ll think I’ll enjoy, is cached, then I can start watching it without worry.

There’s an additional benefit here with faster play times. Since the content doesn’t have to be fetched from a server, it can start playing immediately and without buffering at full quality.

Infrastructural Changes

In order to have the greatest user experience, where all played content is already cached, there’s going to be a lot of false positives. This would be where a lot of content is cached even though only a small amount is actually played. In optimizing these algorithms, it’s entirely possible to download too much. These extra downloads would have to be cleared and replaced at various points. This metadata can be sent to the server in order to tune the algorithm for each user.

False positives aren’t necessarily bad, but it will mean two big technical challenges will have to be filled: low Internet bandwidth, and low device storage. With the proliferation of Internet-connected devices, all vying for connections, it is hard to sell a service that will constantly be downloading large files. Many areas have slow connections or data limits. In addition to this problem, where would all these downloads go? Most Android TVs only come with 16 GB flash and it quickly gets filled with apps and games. How do we resolve these problems?

Li-Fi is an upcoming technology where an Internet connection is transmitted using high-frequency light. This allows for high-bandwidth connectivity, but only within the reach of the light. For stationary devices like TVs this is a useful transmission type. However, this is still limited by network speed. What if we could optimize our Internet downloads?

Routers that use types of smart meters could allow TVs to query when periods of low web activity are. You might be able to assume in the middle of the night. This service could only run when the device is otherwise unused and Internet activity is low. This device to router communication doesn’t seem to exist after a cursory search, but it wouldn’t be difficult to build these as an additional IoT peripheral.

Storage is a big problem. Video files are pretty large, and every byte matters with low internal storage. Thanks to features like Adoptable Storage on Android, it is easy to expand your Android TV’s internal storage to hundreds of gigabytes. At the same time, flash storage costs continue to reduce and it shouldn’t be expensive to start increasing the built-in storage of devices. With 4K video and games, it’s surprising that 16 GB seems to be good enough on devices today.


Cybersecurity is a big deal. As more of our lives get connected to the Internet, the dangers of connectivity problems get worse. Content providers should continue to explore effective ways to mitigate the effects of their users. Like a microgrid, having decentralized systems that occasionally sync with a central provider will reduce outages and the effects of them.

There are certainly things that need to be solved first. The quality and speed of Internet in many places are not sufficient to handle the numerous downloads necessary to make this work. The devices themselves can hardly handle these downloads due to minuscules amount of flash storage. In the coming years though, these two problems will go away and we should continue to explore better caching systems to give users the best viewing experience possible.

Hero image from Softpedia

Nick Felker

Nick Felker

Nick Felker is a student Electrical & Computer Engineering student at Rowan University (C/O 2017) and the student IEEE webmaster. When he's not studying, he is a software developer for the web and Android (Felker Tech). He has several open source projects on GitHub ( Devices: Moto G-2013 Moto G-2015, Moto 360, Google ADT-1, Nexus 7-2013 (x2), Lenovo Laptop, Custom Desktop. Although he was an intern at Google, the content of this blog is entirely independent and his own thoughts.

More Posts - Website

Follow Me:
TwitterLinkedInGoogle PlusReddit