Brett Taylor, Principal Product Manager, Amazon Web Services, and David Lane, Principal of Business Development, Amazon Kindle, are our guest bloggers for this post.
With its unique “split browser” architecture, the Amazon Silk web browser builds upon the power and capabilities of the Amazon Web Services (AWS) cloud to fundamentally rethink the level of performance and functionality that a browser can provide. Since the Kindle Fire launched, in late 2011, Silk has consistently been one of the most popular device applications. As web traffic originating from Silk continues to grow, many site owners have asked for guidance on how to ensure a great customer experience in our browser.
This post lists a few of the more common questions we’ve received from site owners and the prescriptive guidance that we’ve shared with them. If you have additional questions that we haven’t addressed, we encourage you to submit them here. We’ll continue to monitor your inquiries and post updates as needed.
1. What is the Amazon Silk user agent string?
Amazon Silk will supply one of two user agent strings in the request headers. The first is referred to as the “desktop” user agent. This user agent string indicates that the browser is requesting the standard desktop version of the page.
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/[browser version]) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=[true or false]
The second user agent is referred to as the “mobile” user agent. This user agent string indicates that the browser is requesting the mobile view of the web page.
Mozilla/5.0 (Linux; U; Android Android version; Silk/[browser version]) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=[true or false]
The browser version section of the user agent string will change with each new version of the Amazon Silk browser.
The Silk-Accelerated parameter will be set to either true or false. If it is set to “false,” the request is being made directly to origin (i.e., it has not been routed through the Amazon Silk EC2 backend). If this parameter is set to “true,” the request may be routed through the Amazon Silk EC2 backend.
2. What is the client’s IP address?
In cases where the Silk-Accelerated parameter is set to “false,” the source IP address of the request can be obtained as it normally would be on any HTTP request.
However, in cases where the Silk-Accelerated parameter is set to “true,” the source IP address of the request will be the IP address of the Amazon Silk EC2 backend server. In this case the source IP address of the end client is supplied in the x-forwarded-for request header.
Please be aware that each request from a single end user may be routed through different EC2 servers. In other words a web site may receive a series of requests from different source IP addresses but with the same x-forwarded-for header.
Additionally, a single Amazon Silk EC2 backend server will support multiple end users. This means that a web site may see requests with the same source IP address but different x-forwarded-for headers.
3. Does Amazon Silk support the Adobe Flash plug-in?
Version 10.3 of the Adobe Flash plug-in comes preinstalled on the Amazon Silk browser. In the most recent version of Amazon Silk (v 18.104.22.168) the Adobe Flash plug-in was disabled by default. Users can enable the plug-in by selecting the “Enable Flash” option in the browser settings menu.
Amazon Silk version numbers where Flash was enabled by default contain a hyphen. Version numbers with no hyphen have Flash disabled by default.
Web developers who wish to present Flash content to Amazon Silk users should check whether the Flash plug-in is enabled. If it is, Flash content can be safely presented to the user. If Flash is not enabled, the web developer should either present alternate content to the user (much like they would to iPad users) or present a message asking the user to enable the Flash plug-in in the settings menu.
Given Adobe’s announcement that it will discontinue support for the Flash plug-in on mobile devices, we are recommending that site owners transition to HTML5 video. Below are a set of steps to help solve for this issue going forward:
As part of website optimizations for Kindle devices and the Silk Browser, we are recommending a set of steps to help solve for non-Flash video playback.
- Ideally, your site would detect whether or not Flash is available on the device
- As a fallback, you can look for the Silk user agent (details above)
- When Silk is detected, use an HMTL5 video playback element rather than Flash video
- If HMTL5 video is not available, suppress the “Download the latest Flash player message” as this intent is unavailable to Silk customers on Kindle LCD devices
4. How can web developers optimize site performance for Amazon Silk users?
There are several techniques web developers can use to optimize the performance of their web sites for Amazon Silk users.
Caching on the Amazon Silk EC2 backend is one of the primary mechanisms Silk uses to accelerate page loading. Silk’s backend will only cache page elements that are explicitly marked as cacheable by the web developer. Web developers can assure that their web sites are optimized to take advantage of this caching by explicitly setting at least one of the following HTTP cache-control headers: max-age, expires, and public. The longer the time-to-live for a cacheable element the more benefit Silk users will receive.
Another important consideration in web page design is to explicitly set the height and width attributes on any elements used in the page (e.g., images). The Amazon Silk EC2 backend will optimize the delivery of the page elements using the height and width. This optimization will improve page latency for the user and minimize bandwidth usage.
For additional, more general, information on the Amazon Silk web browser, visit the Amazon Silk FAQs.