<![CDATA[jsDelivr CDN Blog]]>https://jsdelivr-blog.ghost.io/https://jsdelivr-blog.ghost.io/favicon.pngjsDelivr CDN Bloghttps://jsdelivr-blog.ghost.io/Ghost 5.52Wed, 21 Jun 2023 07:42:01 GMT60<![CDATA[Globalping Guide: How to Run a Ping Command From Anywhere]]>Running ping commands from specific locations around the globe can be crucial for troubleshooting network issues or testing the performance of your globally-distributed servers. But how can you do that?

While you may have the option to SSH into a remote server or use a VPN, these methods may not

]]>
https://jsdelivr-blog.ghost.io/run-ping-test-from-anywhere-globalping/647898e185ade700017e73dcThu, 01 Jun 2023 13:59:02 GMT

Running ping commands from specific locations around the globe can be crucial for troubleshooting network issues or testing the performance of your globally-distributed servers. But how can you do that?

While you may have the option to SSH into a remote server or use a VPN, these methods may not always be accessible or efficient. What if you want to ping from locations beyond your reach or run multiple pings simultaneously to save time?

That's where Globalping comes in. Globalping is an open-source network testing platform that allows you to run ping commands from (almost) anywhere in the world for free. So whether you're tech-savvy or a curious beginner, we'll show how to send ping requests from various locations using the Globalping platform in this guide.

What is Globalping?

Globalping is a community-powered network testing platform that empowers anyone to run networking commands, including ping, traceroute, dig, curl, and mtr, from anywhere across the globe.

To do that, Globalping relies on a network of hundreds (and counting) of probes hosted by individuals from our community in their homes, offices, and servers they control. Alongside the probe network, the Globalping platform provides an API that handles users' measurement requests. It runs every aspect, from taking requests and selecting appropriate probes to issuing the execution of commands and collecting the results, ensuring quick delivery to the requesting user.

How to run a ping command from anywhere using Globalping

We want Globalping to cater to users with different needs and technical expertise. That's why we're building several integrations that make using the platform a breeze:

  • Globalping CLI tool: If you like working with your computer's terminal and are familiar with running network commands, the CLI tool may be a great choice. We support all major Linux distributions, macOS, and Windows – you can find an installation guide on GitHub.
  • Globalping Slack app: With the Slack app, you can extend Globalping's functionality to your entire team, which can help foster collaboration during critical moments like outages.
  • Web tool: If you prefer a more straightforward approach without any installation, try the web tool on our website.

Now let's see these integrations in action!

Use the web tool for quick results

The web tool is your go-to option if you prefer a user-friendly interface or want to execute a ping command swiftly from any device.
To access the web tool, visit the Globalping website, where you'll find a form accompanied by a map.

Globalping Guide: How to Run a Ping Command From Anywhere

Here’s an overview of the available form fields:

  • Test type: Select the network command you want to execute
  • Target: Enter the hostname or IP address of the target
  • Location: Specify one or more locations from where you want the API to select the probes. You can define multiple locations by separating them with a comma or combine filters with the "+" sign. The field accepts different location types such as ISP names, ASNs, US states, and regions such as Western Europe.
  • Limit: Determine the number of probes to run the command from
  • Settings: Customize other options depending on the selected test type. For ping commands, you can adjust the number of packets to send.
  • Map: Display the measurement results on the map below.

Let's send our first ping command via this form!

Example scenario: Run the ping command to jsdelivr.com from 10 random locations in Europe.

Fill in the form like so:

  • set the test type to "ping"
  • enter "jsdelivr.com" in the target field
  • specify "Europe" as the location
  • leave the limit set to 10
  • click on "Run test"

And voilá, you should see results in a few seconds.

If you've activated the Map switch, you can view the locations on the map where the API issued the ping command. These location points are color-coded based on the ping's rounded average round trip time (RTT). You can also click on the points for more details.

Globalping Guide: How to Run a Ping Command From Anywhere

Below the map is a list of ping results for the ten probes. The first line displays the location, Autonomous System Number (ASN), rounded average RTT, and the packet loss percentage of the ping. The raw ping results are listed below.

Globalping Guide: How to Run a Ping Command From Anywhere

Lastly, at the bottom of the list, you can find a link to share your measurement results with others.

Use the CLI tool or Slack app for more customization

The Globalping CLI tool and Slack app offer greater customization options than the web tools. Also, if you need to run network commands regularly, installing a Globalping integration on your machine can be more convenient than navigating to the web tool to run a command.

In the following examples, we'll focus on using the Globalping CLI tool for running ping commands. However, if you prefer, you can follow along using the Slack app, as sending measurement requests and reading responses are nearly identical.

Ping from anywhere using the Globalping CLI tool

Once you've successfully installed the CLI tool on your system, it's ready for use.
First, you may want to familiarize yourself with the Globalping ping command by running help:

$ globalping ping --help

This command provides a summary of the ping command, example usage, and a list of available flags that let you customize your measurement requests.
If you look at the examples, you can see that a Globalping ping command follows this structure:

$ globalping [command type] [target] from [location] [flags]

Let's write a simple measurement request using this structure.

Example scenario: Run the ping command to jsdelivr.com from Vienna and Berlin.

CLI command:

$ globalping ping jsdelivr.com --from Vienna,Berlin

If not defined otherwise, Globalping sets the limit of probes to 1. So when executing this measurement request, the Globalping API randomly selects one online probe from Vienna or Berlin. If we had limited the number to 2, the API would have selected one probe in Berlin and one in Vienna.
So, in our example, the API chose Vienna:

Globalping Guide: How to Run a Ping Command From Anywhere

Next, let's look at a more advanced example using some of the available flags.

Example scenario: Run the ping command to jsdelivr.com from 10 random locations within AS3209 and Greece and retrieve the results in JSON format.

CLI command:

$ globalping ping jsdelivr.com --from 3209,Greece --limit 10 --json

This returns the ping measurement results for ten probes as JSON, including the raw ping results in `result.rawOutput` and other valuable data. Explore our API reference (WIP) if you're curious about the JSON response object and its contents.

Globalping Guide: How to Run a Ping Command From Anywhere

Advanced tips

Finally, we want to provide you with some advanced tips and ideas that can help you get the most out of Globalping:

  • Experiment with locations: Globalping allows you to specify various types of locations, and it will do its best to understand and select suitable probes. You can input countries (Greece), continents (Asia), cities (Warsaw), US states (Idaho), regions (South America), ASNs (3209 for Vodafone Germany), and even cloud region names (us-east-2).
  • Use available flags: The CLI tool and Slack app offer flags that enable you to customize the results to suit your needs. We recommend you get to know all the options to avoid missing out on potential features that could simplify your workflow.
  • Automate commands: For example, save time by running ping commands automatically with a bash script. Or, if a less tech-savvy team member wants to run a ping at a specific time, they can use the Globalping Slack app and Slack's message scheduling feature to plan to send the command.
  • Build your own networking tools: Globalping is open-source and ready to incorporate into your projects. Whether you want to create custom network monitoring tools for your company or develop a helpful utility for yourself, the Globalping API provides the foundation for your creativity.

Conclusion

We hope this guide could show you how to use Globalping to easily and quickly execute ping commands from anywhere worldwide. With several integrations, including the web tool on our website, the CLI tool, and the Slack app, Globalping caters to users with different levels of technical expertise. So whether you need to troubleshoot network issues or test server performance, we aim to give you the tools and flexibility you need with the platform.

As an open-source project, Globalping thrives on community engagement and contributions. If you have feedback, encounter a bug, or wish to contribute by hosting a probe, please visit our GitHub page.

Why not give Globalping a try? Start with our web tool to get quick results at no cost.

]]>
<![CDATA[Globalping goes live! A community-powered global network testing platform]]>We're happy to announce that our new open-source project, Globalping, is officially launched and available to everybody.

Test global latency, ping from any corner of the globe, troubleshoot routing issues, and even investigate censorship worldwide – all completely free.

The Globalping platform

Globalping is a robust platform with

]]>
https://jsdelivr-blog.ghost.io/globalping-goes-live-a-community-powered-global-network-testing-platform/645fc8d0a759c6000111e844Thu, 18 May 2023 08:21:10 GMT

We're happy to announce that our new open-source project, Globalping, is officially launched and available to everybody.

Test global latency, ping from any corner of the globe, troubleshoot routing issues, and even investigate censorship worldwide – all completely free.

The Globalping platform

Globalping is a robust platform with a vast network of hundreds (and soon thousands!) of probes running in different countries and cities worldwide. While most of these probes are Docker containers, we also offer hardware probes (mini ARM computers) to our valued donors and occasionally give them away for free.

The probes are hosted by our users in their homes, offices and servers they control. Once a probe is online, it connects to the Globalping API, updates itself, and waits for events – all without user input. Rest assured that the probes don't allow incoming connections or open ports. They also don't require a dedicated IP address, so NAT users can still contribute.

However, to prevent abuse, we have a limit of one probe per public IP.

Thanks to this global network of probes, anyone can make measurement requests via the Globalping API. For example, to run a traceroute from ten European locations, the platform considers all online probes registered in Europe, issues the event to run a local traceroute to ten random probes, and reports the results in real time.

How can you use Globalping?

If you're a developer looking to create tailored integrations and tools, the Globalping API is for you.
For everyone else, we are working on a range of official integrations that focus on simplicity and usability – some of which are already available. Let's take a closer look at them!

Want to give Globalping a try? Check out the web tools on our website to send your first network commands via the Globalping platform.

Globalping CLI

Globalping goes live! A community-powered global network testing platform
Globalping CLI

We've designed the Globalping CLI tool to make running measurements and tests a breeze with effortless ways to script automated tests using bash.

To get started, install the CLI tool on your machine: we support all major Linux distributions, MacOS via Homebrew and Windows via Chocolatey. Alternatively, you can download new versions directly from our GitHub page as binaries. (Still, we recommend using a package manager to ensure you get updates automatically.)

After installation, you can use the CLI tool like any other of your regular local tools. Specify a network command and a location from which to run it, and you'll get a response instantly:

$ globalping ping jsdelivr.com from Germany
> EU, DE, Magdeburg, ASN:3209, Vodafone GmbH
PING  (172.67.213.229) 56(84) bytes of data.
64 bytes from 172.67.213.229 (172.67.213.229): icmp_seq=1 ttl=57 time=19.6 ms
64 bytes from 172.67.213.229 (172.67.213.229): icmp_seq=2 ttl=57 time=19.8 ms
64 bytes from 172.67.213.229 (172.67.213.229): icmp_seq=3 ttl=57 time=17.0 ms

---  ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 402ms
rtt min/avg/max/mdev = 17.049/18.791/19.774/1.235 ms

You can also redirect the output to a file and even request the raw json output for easier parsing.

Globalping Slack app

Globalping goes live! A community-powered global network testing platform
Globalping Slack

Love the idea of Globalping, but wish it was more accessible to your less tech-savvy teammates? Wouldn't it be great to use it for collaboration within your team? We've got your back and have developed the official Globalping Slack app to do just that!

To get started, install the app in your Slack workspace and use the "/globalping" command or mention the bot "@globalping" to run a command. Then, the app responds by posting the results in the same channel or group chat. Since it utilizes the same user-friendly format as our CLI tool, the transition is seamless.

With the ability to run tests in Slack threads by mentioning the bot, you can actively collaborate with your team in critical moments like outages or troubleshooting CDN routing issues.

We believe this will make our Slack app an indispensable tool for network engineers, DevOps, and technical support teams!

Roadmap

Today's launch marks only the beginning of Globalping's journey, and we have many new and exciting features in the works. Here are just a few of them:

  • Probe management dashboard and additional limits for users running a probe
  • API token management system
  • Continuous monitoring of public Internet infrastructure including detailed CDN and DNS performance data
  • Many, many more integrations and tools!

Join us on Github, where we collectively contribute to making Globalping a powerful and user-friendly platform.

We are super grateful for the support of our donors and contributors and look forward to a great time collaborating on making the Internet faster for everyone!

]]>
<![CDATA[New Website, Improved API, and ESM Support]]>It's been a while since our last update, but don't worry - we've been hard at work! Check out the summary of updates we're launching!

ESM - ES Modules Support

Since launching the support for ESM about two years ago, we'

]]>
https://jsdelivr-blog.ghost.io/jsdelivr-2023-esm-website-api/63a47a04bb2174003d5f74c5Mon, 17 Apr 2023 10:44:16 GMT

It's been a while since our last update, but don't worry - we've been hard at work! Check out the summary of updates we're launching!

ESM - ES Modules Support

Since launching the support for ESM about two years ago, we've been working on improving the compatibility with the existing packages, as well as the bundling performance. The improvements done over the past year include:

  • Support for the exports field, which allows package authors to configure which files will be served by the CDN by default.
  • Support for the imports field, which can be used to load different internal files based on the environment.
  • Support for the browser field, which allows substituting certain files for browser bundling or entirely excluding them.
  • Support for converting existing CJS modules to ESM.
  • Automated polyfilling of the supported node.js modules and globals.
  • Major performance improvements for large packages.
  • Various other smaller compatibility improvements.

Our current ESM bundling mode aims to strike a balance between the loading performance (the number of requests, amount of loaded data, and caching) and compatibility with most of the existing packages.

We're looking to further improve the compatibility with packages that can't be easily bundled or require custom configurations. If you are interested in more technical details, check out the related GitHub issue.

Improved API

Our data API has received a major overhaul recently, including:

All API changes are fully backward compatible. If you use an endpoint that has been deprecated, you'll now see a Deprecation header in the response, as well as a Link header pointing to the new endpoint. All deprecated endpoints will continue to work, but their new versions may provide additional features or improved data formats.

New Website

Our website has been redesigned to better showcase the new ESM and API features and overall improve the user experience:

  • The home page got dedicated sections for ESM, the API, and our custom CDN endpoints, and shows more of our usage stats.
  • The project pages were extended with:
    • an "install" section, which makes use of the automated entry points detection,
    • README files, which show documentation directly on our website,
    • an inline search widget, which allows search for the next package without going back to the home page,
    • more package usage stats.
  • Package search now allows filtering for specific file types (ESM/JS/CSS) and includes monthly downloads directly in the results.
  • The new About Us page explains who we are and what we do, with the History page documenting the most interesting steps of our journey.
  • The new Purge Tool provides a GUI way of purging our cache.

Additionally, we're happy to re-launch the new Statistics page, which uses the new API features to provide a nice summary of our CDN usage. You can learn which CDN providers we use and where, see the popularity of different browsers and operating systems, and explore the most popular projects. These statistics are based on fully anonymous, highly aggregated access data.

New Website, Improved API, and ESM Support

Stay tuned and follow us on Twitter @jsDelivr!

]]>
<![CDATA[New Sponsor Announcement: Gcore Joins jsDelivr]]>We're happy to announce that Gcore, a Luxembourg-based CDN and Cloud company, has joined jsDelivr as an infrastructure sponsor!

It's a deal that has been in the works for more than a year, but we have finally finished the integration between our systems, and all jsDelivr

]]>
https://jsdelivr-blog.ghost.io/new-sponsor-announcement-gcore-joins-jsdelivr/639e0d6fbb2174003d5f73e0Tue, 24 Jan 2023 09:01:52 GMT

We're happy to announce that Gcore, a Luxembourg-based CDN and Cloud company, has joined jsDelivr as an infrastructure sponsor!

It's a deal that has been in the works for more than a year, but we have finally finished the integration between our systems, and all jsDelivr users will now be able to benefit from Gcore's global infrastructure.

A new unlimited CDN in the jsDelivr Multi-CDN

A major requirement to become a core jsDelivr CDN provider is fully unlimited bandwidth regardless of spikes or region. Additionally, we require IPv6 support, HTTP/2, HTTP/3, a solid purge API, raw logs access, and many other smaller features.

From this day forward, Gcore has provided us with all of the above, allowing us to be more flexible than ever. jsDelivr automatically load-balances all traffic based on performance metrics and availability, meaning Gcore will now be used to serve traffic in key regions where they perform the best.

New Sponsor Announcement: Gcore Joins jsDelivr
Gcore performance in Vietnam
New Sponsor Announcement: Gcore Joins jsDelivr
Gcore performance in Turkey
New Sponsor Announcement: Gcore Joins jsDelivr
Gcore performance in Ohio, USA

Moreover, if any other CDN provider runs into availability issues, we will be able to replace them with Gcore for as long as needed. In the worst-case scenario, any single CDN we integrate with can support 100% of our traffic for an indefinite amount of time.

A new unlimited GeoDNS provider

In addition to CDN services, Gcore has also provided us access to their DNS products, including GeoDNS. At the moment, jsDelivr is using NS1 and ClouDNS in parallel for DNS hosting. Our Multi-CDN system relies on the DNS providers to accept our routing rules via API and deploy them globally.

For example, NS1 alone served almost 1.5 billion Geo DNS queries in the past month.

New Sponsor Announcement: Gcore Joins jsDelivr
NS1 DNS queries

By adding Gcore into the mix, we will be able to lower the load on our existing DNS providers and improve the availability of our systems at the same time.

New Sponsor Announcement: Gcore Joins jsDelivr
jsDelivr nameservers

Image optimization on our website

Additionally, we decided to utilize Gcore's image optimization service called Image Stack to optimize the performance of our new website.

In the recent redesign, we added README files to all project pages on jsdelivr.com. We believe it provides additional value to our users, but at the same time, it impacts the performance of the website because many README files contain a large number of large images.

To reduce the performance impact, we created a special CDN domain with Gcore that has no origin server—the origin depends on the URL that is provided to it.

For example, here is a preview image being loaded by ChatGPT.nvim: https://raw.githubusercontent.com/jackMort/ChatGPT.nvim/media/preview.png

It's a PNG file weighing a whole 1.2MB. By loading it through our domain, it can be further optimized and converted to a modern image format: https://img.jsdelivr.com/raw.githubusercontent.com/jackMort/ChatGPT.nvim/media/preview.png

Now that file weighs 69KB! That's 94.25% savings with no visual degradation—something Google will greatly appreciate in its ranking.

Next steps

Stay tuned as we continue our efforts to build the best open-source CDN out there! We plan to announce new features, new projects, and new sponsors in the upcoming months.

]]>
<![CDATA[How the German court’s ruling on Google Fonts affects jsDelivr and why it is safe to use]]>After the court ruling against Google Fonts, some of our users got understandably worried about the implications of that ruling and how it affects jsDelivr. For this reason, we hired an experienced law firm here in Krakow, Poland where jsDelivr’s HQ is. We asked them to review what

]]>
https://jsdelivr-blog.ghost.io/how-the-german-courts-ruling-on-google-fonts-affects-jsdelivr-and-why-it-is-safe-to-use/621fa1688c0c00003d62dc22Wed, 02 Mar 2022 18:22:41 GMT

After the court ruling against Google Fonts, some of our users got understandably worried about the implications of that ruling and how it affects jsDelivr. For this reason, we hired an experienced law firm here in Krakow, Poland where jsDelivr’s HQ is. We asked them to review what happened and provide a simple explanation of what it all means for our users.

Here is what Oleksandr Skoblenko, the founder and managing partner of R&S Partners law firm (https://rspartners.pl/en/) had to say:

On 20 January 2022, a court in Munich ruled that the owner of a website using Google Fonts was in breach of the GDPR by transferring the IP addresses of its website users to Google. According to the German court, the transfer of IP addresses (which are explicitly recognized under the GDPR as personal data) took place in a manner incompatible with the GDPR, i.e. without the consent of the entity to which the IP relates and without meeting the prerequisite of the existence of a legitimate legal interest on the part of the website owner. The owner of the website was ordered to pay damages of EUR 100 to the user (in the case of further infringements, the amount of damages is to reach EUR 250,000 or 6 months of imprisonment for each subsequent infringement).

The cited ruling has stirred up anxiety on the web, provoking a discussion on the possibility and risk of similar legal assessments for other providers of website improvement services and web developers. It is difficult to prejudge how the further interpretation of the GDPR on the ground of the web services market will turn out, but it should be noted that there are no grounds for panic and abandonment of CDN usage due to the mentioned ruling of the German court.

First of all, it should be noted that we are dealing with a single ruling by one of the national German courts. Each court in each EU member state is competent to assess GDPR compliance on its own, and the German ruling does not imply the creation of a uniform line of case law even exclusively within Germany, let alone across the EU. The case of each website, each party using a particular service and even each potential complaining user will require separate analysis.

It should be stressed that there are a number of factors that allow a different assessment of the services provided by jsDelivr than is the case with the Google Fonts ruling.

GDPR allows, in Article 6, the processing of data in case of the occurrence of circumstances indicated in this provision. Among the number of indicated possibilities, the prior consent to the processing of personal data by the subject to the processing (Article 6(1), sentence 1, letter a GDPR) and the existence of a substantial legal interest on the part of the processor in Article 6(1), sentence 1, letter f GDPR are of particular importance.

The German court emphasizes in the ruling that the use of Google Fonts does not benefit from the exemption in Article 6(1) sentence 1 letter f GDPR because it is possible to use the fonts without the user connecting to Google's servers. The court does not consider in principle other aspects of this provision.

In the case of jsDelivr, the situation is slightly different. First, the lack of global distribution of servers within the jsDelivr CDN would cause a significant drop in the quality and speed of the service, and the effective functioning of the service is not possible if a user downloads the data to a local server. Even if it was technically possible, in practice it would be expensive, complex, and burdensome for the user, and using the service itself would become pointless. The processing of personal data (IP Addresses) is therefore essential to be able to provide a service that allows web developers and website owners to benefit from the global infrastructure and other advanced features of jsDelivr that improve the functioning of the websites that use it.

The processing of IP addresses is essential for jsDelivr to be able to send the required data to the user from the jsDelivr servers. In addition, the data is processed solely for statistical purposes to determine the countries of origin of the users, which is important for the expansion of the CDN infrastructure by locating servers in areas of the world where they are in particular demand. This processing, therefore, has full economic justification and its purpose is legitimate. jsDelivr does not process IP addresses for purposes such as marketing or reselling them to others. Nor does it store it long-term. Instead, the data is aggregated as soon as possible, often within hours, and then deleted.

This processing is necessary for the functioning of the service - without IP processing it would be impossible to transmit your request between multiple servers and transfer the data required for a website to operate back to your computer. The scope of the data processed - IP address or location data - also seems justified in relation to the objective of providing the user with an efficiently operating website. Moreover, the important factual interest of CDN users relates to the fact that CDN services affect the quality of the functioning of a website, and not only the aesthetic value in the form of fonts, as is the case with Google Fonts.

In this ruling, it is also notable that the court refers to the transfer of data specifically to Google as being known for incidents of personal data breaches. This ruling cannot, therefore, be transposed to all websites - it seems not insignificant that the ruling emphasizes precisely this relationship. jsDelivr seeks to work with entities that provide an adequate level of data protection.

Additionally, it is worth noting that using jsDelivr’s CDN services minimizes the risk of attacks on websites and their users by making sure files loaded from jsDelivr are up-to-date and loaded using an encrypted connection from the same region as the user, making MITM attacks by foreign powers less likely. For example, EU users will connect to EU-hosted servers and avoid traversing foreign networks that could in theory be malicious and try to modify the contents of the data, read it, or spy on the user. These attacks could pose a much greater risk to the personal data administered by specific websites than the transmission of IP by them for the purpose of the CDN services and for statistical purposes.

To further minimize the risks, we propose that jsDelivr’s users extend their privacy policies to inform them that data such as IP address, place, or date of access are processed for statistical purposes and to ensure the smooth and secure operation of the website, and that they are passed on to third-party service providers. The user's consent to the privacy policy is an additional (though not exhaustive) aspect of the safeguard.

In conclusion, the ruling that has been so controversial recently does not seem to fully address the factual and technical circumstances of how jsDelivr works, and at this point as a single ruling should not lead to any real concerns about using CDN's services. The arguments for extending to other online services a single ruling strongly emphasizing Google's failure to adequately protect personal data are insufficient and lack substance.

]]>
<![CDATA[jsDelivr welcomes BootstrapCDN and continues to power Bootstrap!]]>https://jsdelivr-blog.ghost.io/jsdelivr-welcomes-bootstrapcdn/6055e875369c46003b6514ccMon, 22 Mar 2021 14:16:42 GMT

We have a couple of exciting announcements we would like to share today!

Bootstrap switches to jsDelivr for CDN services

jsDelivr welcomes BootstrapCDN and continues to power Bootstrap!
jsDelivr is the official CDN of Bootstrap

In case you missed it, a few months ago jsDelivr became the official CDN of Bootstrap. All Bootstrap users are now recommended to switch to jsDelivr and get the benefit of our Multi-CDN infrastructure and automated updates!

We are happy to start working together with the Bootstrap team to build a better, faster and easier to use web.

Check out our infographic to learn more about how jsDelivr optimizes file delivery for production use-cases.

BootstrapCDN joins jsDelivr!

jsDelivr welcomes BootstrapCDN and continues to power Bootstrap!
BootstrapCDN powered by jsDelivr

The BootstrapCDN project, originally founded by Justin Dorfman and MaxCDN, later maintained by XhmikosR and Joshua Mervine, has always been the go-to CDN for serving everything related to Boostrap, including Font Awesome and Bootswatch.

Today we are happy to announce that BootstrapCDN  has officially joined jsDelivr!

Here is a list of changes and the improvements we plan to introduce:

  • The BootsrapCDN Github repo has moved under the jsDelivr org.
  • We received full ownership of the bootstrapcdn.com domain
  • All previous CDN hostnames like stackpath.bootstrapcdn.com and maxcdn.bootstrapcdn.com were migrated to a new CDN infrastructure
  • The new CDN infrastructure for *.bootstrapcdn.com is powered by Cloudflare for traffic and DNS. (Enterprise account)
  • The origin is with AWS S3 and BunnyCDN handles origin shielding, URL rewrites and HTTP header changes
  • We will continue to maintain ALL previously supported hostnames and URLs indefinitely! Everything will continue working without any action necessary by BootstrapCDN users
  • The new CDN URLs will be under the cdn.jsdelivr.net hostname and will match those of the Bootstrap documentation. The jsDelivr Multi-CDN was built for production use and we recommend everyone to switch to cdn.jsdelivr.net.
  • We plan to refresh the design of the main website! Check it out on our Github and leave your feedback.
  • The website itself is going to be converted to static HTML for better performance and will be migrated from Heroku.
  • We will add a new CDN page for Bootstrap Icons

We are very excited about these news and we are happy that we will soon be able to celebrate 100 billion monthly requests together with the Bootstrap and BootstrapCDN teams!

Stay tuned for more updates and make sure you check out our new ESM CDN endpoint

]]>
<![CDATA[jsDelivr keeps growing and expanding]]>jsDelivr has been growing non stop in 2020 and even more improvements are coming in 2021!

Here is a summary with the most interesting updates from the jsDelivr team:

- We recently introduced the support for ES modules https://www.jsdelivr.com/esm
Load modern JavaScript packages built for you

]]>
https://jsdelivr-blog.ghost.io/jsdelivr-keeps-growing-and-expanding/601ad03973fc8b0039f14b68Wed, 03 Feb 2021 16:35:25 GMT

jsDelivr has been growing non stop in 2020 and even more improvements are coming in 2021!

Here is a summary with the most interesting updates from the jsDelivr team:

- We recently introduced the support for ES modules https://www.jsdelivr.com/esm
Load modern JavaScript packages built for you on-demand. Works in modern web browsers, node.js, and deno

- We migrated our multi-CDN load-balancing system to a new and better in-house logic. Our infographic was updated accordingly https://www.jsdelivr.com/network/infographic

- In 2021 we plan to improve jsDelivr even further. Better support for modules, a refreshed website and automated cache purging are only a few of our plans.

- We have grown to ~97 billion monthly request and almost 4 Petabytes of traffic every month!


And we keep constantly growing! A big thank you to all of our users for their trust and support!

If you have any questions or feedback please open a Github ticket in our repo.

]]>
<![CDATA[New origin cluster]]>

swarm-diagram

We recently migrated our origin infrastructure to a much more reliable system.
From now on the jsDelivr origin is hosted on Docker swarm cluster consisting of:

  • 3 manager nodes in 3 different datacenters. All hosted by DigitalOcean. This means that even if a whole datacenter goes down we will still
]]>
https://jsdelivr-blog.ghost.io/new-origin-cluster/5a5a628469594a0022c4d997Sat, 13 Jan 2018 20:07:09 GMT

swarm-diagram

We recently migrated our origin infrastructure to a much more reliable system.
From now on the jsDelivr origin is hosted on Docker swarm cluster consisting of:

  • 3 manager nodes in 3 different datacenters. All hosted by DigitalOcean. This means that even if a whole datacenter goes down we will still have full control over our cluster. And of course it will self health without any intervention.
  • 3 worker nodes that actually host our code. They are hosted in Amsterdam, Frankfurt and Paris. With Amsterdam and Frankfurt sponsored by DigitalOcean. All with plenty of resources to deal even any kind of spike in traffic.

Our cluster is using a mesh network with traffic load-balanced internally. Regardless of what location the traffic hits it could be routed internally to a completely different location if for example the local container failed to start successfully or crashed for any reason.

In addition to that we are also using an external HTTP load-balancer provided by Fastly. It uses healthchecks to monitor all of our origin nodes and load-balances all traffic evenly among them. If a node or datacenter goes down all traffic will be immediately re-routed to the remaining healthy nodes.

We also enabled an additional layer of caching. Fastly now caches all origin files and serves them to Cloudflare, MaxCDN and Quantil. If our whole cluster goes down for any reason most files will stay cached on Fastly that will continue serving them. And of course the other CDNs do the same thing, if the origin is unavailable they will continue serving files they have already cached.

This means that jsDelivr became even more reliable than before. jsDelivr was built to be used in production by even the largest websites and corporations, and we take that responsibility seriously.
Check our cool infographic to learn more about how our CDN operates.

]]>
<![CDATA[How jsDelivr works - Infographic]]>

An easy and visual way to understand how our service works and offers the best uptime and performance of all public CDN providers.

https://www.jsdelivr.com/network/infographic

infographics

]]>
https://jsdelivr-blog.ghost.io/how-jsdelivr-works-infographic/59b80109e7efbe0023fd60acTue, 12 Sep 2017 15:46:31 GMT

An easy and visual way to understand how our service works and offers the best uptime and performance of all public CDN providers.

https://www.jsdelivr.com/network/infographic

infographics

]]>
<![CDATA[jsDelivr reloaded 2017]]>

thumb2

A long time has passed since the last update. Since then jsDelivr has improved and grown a lot.

New backend!

  • A completely automated system that works by proxying npm and Github directly. All a user needs to do is publish his package to the npm registry and it will instanly
]]>
https://jsdelivr-blog.ghost.io/jsdelivr-reloaded-2017/59b7fe1ce7efbe0023fd60abTue, 12 Sep 2017 15:44:24 GMT

thumb2

A long time has passed since the last update. Since then jsDelivr has improved and grown a lot.

New backend!

  • A completely automated system that works by proxying npm and Github directly. All a user needs to do is publish his package to the npm registry and it will instanly appear on the jsDelivr CDN
  • To protect our users all requested files are permanently cached on our servers. If a package gets deleted from npm you will be protected and your website will not break
  • The origin is now hosted on multiple servers and multiple instances with load-balancing and failover enabled between them

New website!

  • We now have a completely new website https://www.jsdelivr.com/
  • Its connected to npm directly and you can use it to easily search and get the CDN links of all files hosted there
  • All projects now have complete download stats! It was a large and difficult project but its finished and now you can see exactly how popular your project is
]]>
<![CDATA[KeyCDN joins jsDelivr]]>

keycdn_font_only_fb2

KeyCDN is a CDN provider based in Switzerland with a global anycast network and lots of international clients. Even though they are a fairly new company (2012) they already have all the features we require from a core CDN provider such as SPDY, custom SSL+CNAME and Cedexis community data,

]]>
https://jsdelivr-blog.ghost.io/keycdn-joins-jsdelivr/59b7fcf1e7efbe0023fd60aaTue, 27 Jan 2015 16:27:00 GMT

keycdn_font_only_fb2

KeyCDN is a CDN provider based in Switzerland with a global anycast network and lots of international clients. Even though they are a fairly new company (2012) they already have all the features we require from a core CDN provider such as SPDY, custom SSL+CNAME and Cedexis community data, something that a lot of big players still don't offer.

Today we announce that they are joining the jsDelivr platform and from now on will be serving traffic to all of our users. (commit)
KeyCDN along with MaxCDN and CloudFlare will be a core CDN which means that our load balancing algorithm will treat them equally in all countries and will base the selection strictly on performance. Core providers are the backbone of our network and we have strict requirements to ensure our superb performance and uptime.

keycdnmap

With the inclusion of KeyCDN we now get a few new locations such as Valencia in Spain and Moscow in Russia plus lots of POPs in existing locations that will offer us better peering with local ISPs increasing the performance overall. KeyCDN also plans adding lots of other locations that we don't have! Cant wait for Mexico!

But mostly we are excited for the new Moscow POP location, this will greatly improve our performance in Russia and surrounding countries such as Ukraine. We have lots of users over there with major websites such as vesti.ru using us.

russia

Welcome KeyCDN!

]]>
<![CDATA[New sponsor: NSONE]]>

Many of you might know that up until now, jsDelivr was using Akamai to host our DNS.

For a time, this was a usable solution, but unfortunately we realized that the performance of Akamai’s DNS does not meet our requirements. We get millions of requests every day from

]]>
https://jsdelivr-blog.ghost.io/new-sponsor-nsone/59b7fcb2e7efbe0023fd60a9Mon, 15 Dec 2014 16:26:00 GMT

Many of you might know that up until now, jsDelivr was using Akamai to host our DNS.

For a time, this was a usable solution, but unfortunately we realized that the performance of Akamai’s DNS does not meet our requirements. We get millions of requests every day from all countries around the globe and need the best possible performance for every single user that we serve.

That’s why we contacted NSONE. They run an anycasted DNS network that’s in every major market and spans six continents. They assure me they are working on a POP in Antarctica too. :)

NSONE services companies with distributed infrastructures that need a flexible way to route their traffic, and beyond being consistently among the fastest DNS providers on the planet, they also focus on the quality of the answers they return to make sure your users are routed to your application infrastructure effectively.

Aside from just having great performance, NSONE offers several unique features that made them really stand out to us. For instance, they developed the “Filter Chain” to easily configure complex traffic routing algorithms. NSONE also offers simple ways to ingest and process real-time telemetry about your systems and the Internet, so they can route eyeballs to your optimal application endpoint based on metrics that matter to you, not just using geography.

After some testing, NSONE seemed like a perfect fit for jsDelivr and we’re happy to announce that NSONE is now one of our major sponsors. They will help jsDelivr grow bigger and become even faster than before.

NSONE's CEO, Kris Beevers, says, "As purveyors of a faster Internet, CDN aficionados, and generally open source-loving humans, we’re excited to sponsor jsDelivr and support the OSS community."

]]>
<![CDATA[jsDelivr news #3]]>

Its been a while but I wanted to share some of the latest news about jsDelivr.

  • We are talking with multiple CDN providers regarding a partnership with jsDelivr.We are heavily invested in the performance of our platform so we are always looking for more providers to add to our
]]>
https://jsdelivr-blog.ghost.io/jsdelivr-news-3/59b7fc44e7efbe0023fd60a8Mon, 08 Dec 2014 16:24:00 GMT

Its been a while but I wanted to share some of the latest news about jsDelivr.

  • We are talking with multiple CDN providers regarding a partnership with jsDelivr.We are heavily invested in the performance of our platform so we are always looking for more providers to add to our load balancing system.
  • We plan on adding multiple new locations in Asia. This includes 9 locations in China mainland(!) and an other 9 locations in various countries of Asia. (Not CloudFlare) The main blocker right now is the ICP license required by the Chinese government. We are doing our best to get it.
  • A new POP location in Madagascar went live. Its sponsored by an ISP provider called Telma after they noticed that lots of their users are hitting our servers but not getting the performance they deserve. Here is a chart with the performance improvement of jsDelivr in Madagascar

madagascar

  • A new feature is now in beta testing. jsDelivr can now act as a CDN for each and every plugin currently hosted in the WordPress plugin directory. This means that any WP developer can add an option to load his files from our CDN to his plugin. Users get a faster website and developers a new cool feature, win-win. More info https://github.com/jsdelivr/jsdelivr/issues/2632
  • We are also working on our new website. The progress is slow due to lack of funds and resources so if you are a developer or designer consider contributing in our repo https://github.com/jsdelivr/beta.jsdelivr.com
  • Developers and companies that have their projects on jsDelivr can now get access to a new function of jsDelivr that allows the purging of individual files hosted on our servers. This is useful if you want your users to get instant access to new versions on URLs using version aliasing or /latest/. For security reasons the documentation for this feature is private so you will need to contact us to get access.

We have lots of new stuff planned for the future so make sure you follow jsDelivr and jimaek on twitter. And as always if you want to contribute with coding/design/funds feel free to contact us.

]]>
<![CDATA[Load balancing algorithm open sourced!]]>

You probably have been wondering how jsDelivr does load balancing between CDNs. Here is a good blog post that I wrote for Mozilla that explains what happens in the backend "jsDelivr – The advanced open source public CDN".

The only thing missing was the actual code. Well I

]]>
https://jsdelivr-blog.ghost.io/load-balancing-algorithm-open-sourced/59b7fc0be7efbe0023fd60a7Mon, 10 Nov 2014 16:23:00 GMT

You probably have been wondering how jsDelivr does load balancing between CDNs. Here is a good blog post that I wrote for Mozilla that explains what happens in the backend "jsDelivr – The advanced open source public CDN".

The only thing missing was the actual code. Well I am happy to announce that in collaboration with Cedexis we are open sourcing our DNS application and the full load balancing code.
The community is now free to read the code and purpose modifications to improve our logic and the performance of the whole CDN.
Check out jsDelivr's load balancing algorithm at Github right now.

And of course Cedexis will continue helping out and improving the code as they release new features and improvements to their platform. Performance and stability will always be our number one priorities. Its something that we have in common with all of our sponsors including Cedexis, MaxCDN and CloudFlare.

With this move we removed one of the biggest "black boxes" of jsDelivr and that's only the start. We will continue to increase our transparency to ensure the trust of our community and inspire more people to become contributors and help us out with all kinds of interesting problems that need solving.

]]>
<![CDATA[Public CDN auto-updated]]>

Introducing libgrabber!

I am happy to announce that jsDelivr is now in process of becoming fully automated.

libgrabber is an app that runs on our servers and can keep projects hosted at jsDelivr updated automatically without requiring the author or any contributors to manually process and upload the new versions.

]]>
https://jsdelivr-blog.ghost.io/public-cdn-auto-updated/59b7fb02e7efbe0023fd60a6Sat, 28 Jun 2014 15:19:00 GMT

Introducing libgrabber!

I am happy to announce that jsDelivr is now in process of becoming fully automated.

libgrabber is an app that runs on our servers and can keep projects hosted at jsDelivr updated automatically without requiring the author or any contributors to manually process and upload the new versions.
This is very important as the repo is quite heavy and require people to download it is a bad idea.
Now our bot can take care of all the dirty work.

And it requires no modifications in the author's repo. All is needed is a valid update.json file in jsDelivr's repo inside the project that we want auto-updated.

Sources that libgrabber supports:

  • Github - Tagged versions
  • npm
  • bower

Here is an example update.json file

{
  "packageManager": "github",
  "name": "morris.js",
  "repo": "morrisjs/morris.js",
  "files": {
    "include": ["morris.css", "morris.js", "morris.min.js"]
  }
}

That's it, morris.js is now auto-updated and all future versions will be submitted automatically by our bot. The config also allows the user to configure in detail the production files by using a mix of include and exclude rules.

Here is libgrabber in action updating the project domtastic to 0.7.4.

We plan to expand libgrabber in the feature to achieve an even greater level of automation.
In the meantime you can help us develop the project or add update.json files to projects that dont have any.

]]>