Traffic has continued to rise; we've gone from 2 million requests and 900 gigabits per second at the end of August 2015 to 2.5 million requests and 1.3 terabits per second as of today. We are honored that new and existing customers continue to entrust more of their traffic to us.
Our POP in São Paulo, Brazil is finally live after our heroic data center team wrestled with bureaucracy, logistics, and, in one memorable occasion, an actual water buffalo (it’s a long story and we can’t talk about it until all the court cases have been settled).
We’ve also added two new Australian POPs. The first is in Brisbane, affectionately known as Brissy, or Bris-Vegas. The second is in Perth, which, as the capital of Western Australia, holds the twin honors of being both the most isolated and the sunniest capital city in the world. (Although Honolulu also claims it’s the most isolated.) Perth also has the highest number of self-made millionaires per capita in any city in the world.
So now you know.
As well as the usual performance improvements, long term projects (more coming soon) and preparations for the end of the year, we've also rolled out some new features:
We’ve added a VCL function which is essentially equivalent to std.time() from Varnish upstream. It converts a string to a time. The API is:
TIME time(STRING s, TIME fallback)
If conversion fails, fallback will be returned.
It supports all the formats upstream std.time() supports, except ISO 8601:
"Sun, 06 Nov 1994 08:49:37 GMT"
"Sunday, 06-Nov-94 08:49:37 GMT"
"Sun Nov 6 08:49:37 1994"
"784111777.00"
"784111777"
For example, you can do something like:
if (std.time(resp.http.last-modified, now) < now - 1w) {
….
} >
Read more in our docs.
This VCL function does exactly what you’d expect it to — turn an integer (epoch seconds) into a VCL TIME object. The API is:
TIME integer2time(INT time)
For example, you can do something like:
if (time.is_after(now, std.integer2time(std.atoi("218448601")))) {
…
}
Read more in our docs.
At Fastly we’ve had various randomness functions in VCL for some time, and we’ve now enabled one of these functions to be “seeded,” allowing users to control the level of randomness. It is identical to randombool, except it takes an additional parameter, which is used to seed the random number generator.
It should be noted: this does not use secure random numbers and should not be used for cryptographic purposes.
The API is:
BOOL randombool_seeded(INT numerator, INT denominator, INT seed)
For example, you can do something like:
set req.http.My-HMAC = digest.hmac_sha256("sekrit", req.http.X-Token);
set req.http.HMAC-Chopped = regsub(req.http.my-hmac, "^(..........).*$","\1");
if (randombool_seeded(5,100,std.strtol(req.http.hmac-chopped ,16))) {
set req.http.X-Allowed = "true";
} else {
set req.http.X-Allowed = "false";
}
Read more in our docs.
In our quest to prevent you from having to do parsing using regular expressions, we’ve implemented some functionality to allow you to get the dirname (the directory) and the basename (the filename) for a URL.
For example, with the URL http://www.example.com/some/path/index.html, you can apply the functions like this:
set req.http.X-Basename = req.url.basename; # X-Basename is now index.html
set bereq.http.X-Dirname = bereq.url.dirname; # X-Dirname is now /some/path
Read more in our docs.
As mentioned above, while we strive to free you from regular expression-based parsing, we realize how useful regexes are. So we’ve added some functionality that lets you capture the matches from them:
set req.http.Foo = “abbbccccc”;
if (req.http.Foo ~ "^(a+)(b+)(c+)") {
set resp.http.match0 = re.group.1; # now equals ‘a’
set resp.http.match1 = re.group.2; # now equals ‘bbb’
set resp.http.match2 = re.group.3; # now equals ‘cccccc’
}
Read more in our docs.
Drupal powers content management for 12.2% of the top 100,000 websites worldwide, including whitehouse.gov, Weather.com, Pinterest, NBCUniversal, Tesla, Pfizer, MLS, NBA, the GRAMMYs, the Emmys, and Harvard. We’re pleased to announce we’ve partnered with the Drupal Association, helping them reduce page load times and deliver downloads in advance of the Drupal 8 release. (Read more about the migration on their blog.) Our Drupal 7 plugin makes it easy to integrate Fastly with your Drupal site. Our team is working to ensure end-to-end compatibility with Drupal 8 caching and Fastly’s surrogate keys — more on this in Q1’16!
Fastly’s Timed Metadata Injection (ID3 tags) feature provides a flexible and dynamic way to embed custom metadata about the stream into video segments at specified time instances. These metadata injections are useful in a variety of scenarios, like signaling a video player to start ad breaks, disable player controls, beacon performance and engagement measurements, and give contextual metadata about what’s currently being played, etc. This feature is currently available for HLS streaming format due to its adoption for streaming videos to a wide variety of platforms and devices.
If you’re interested in Video-on-Demand, Streaming Media, or DASH, please get in contact with sales@fastly.com.
We strive to make onboarding, implementation, and maintenance of your service as easy as possible. When needed, our amazing Customer Engineering team is on deck to help customers move even faster. As we grow and customer needs diversify, we want to have the right plans in place.
Every customer is still automatically covered by our Standard Support Plan, free of charge. That’s the part of the Fastly service which gives you access to help, documentation, our Community Forum and online support system. If you have more complex requirements, you can now upgrade to our Gold Support Plan for priority routing and additional coverage. Our Platinum Support Plan offers the highest level of support, including 24/7/365 phone support, expedited response times, and dedicated account management.
For customers requiring technical expertise during setup and integration, hands-on training or consultation services on Fastly, Varnish, VCL, or site performance optimization, we have Professional Services packages to meet your needs.
If you’re interested, please contact sales@fastly.com.
Origin Peering (OP) is a way for Fastly customers to reduce their bandwidth costs by moving origin-pull traffic away from transit or peering to a dedicated Fastly network connection. This is achieved by installing one or more 10G private network interconnects (PNI) with our customers in physical locations where we both have POPs (currently we support IAD and SJC, with more locations in the coming months). This provides our customers with at least one dedicated physical path (with dedicated bandwidth) from their chosen shield POP(s) to their origin, from which we would normally pull their content. The customer will route this traffic to Fastly over a standard BGP session. The Origin Peering product does not apply to certain partners or Internet exchange point peers, where our standard peering policy applies.
If you’re interested, please contact sales@fastly.com.
Q3-Q4 is conference season for us, so our engineering team has been on the road. Highlights include:
Check out our events page to keep track of which conferences we’ve been to and which ones we’ll be attending in the coming months.
We’re continuing our efforts to support open source projects by donating our services. Here are some projects that have recently started using Fastly:
If you have an open source project that could use Fastly services, please reach out to community@fastly.com. Want to chat with Fastly engineers and other customers using our product? Check out our Community Forum.