WWW Watch

jQuery 公式 Blog 「jquery-latest.js を使用するのをやめろ」

jQuery 公式 Blog は、「Don't Use jquery-latest.js」 と題された記事内で、今後、jquery-latest.js のバージョンを 1.11.1 で固定することと、本番環境で jquery-latest.js を読み込むのをやめてくれというアナウンスを行っています。

jQueryjQuery 公式 Blog は、7月 3日付けで投稿された 「Don't Use jquery-latest.js (jquery-latest.js を使うな)」 と題された記事内で、今後、jquery-latest.js のバージョンを 1.11.1 で固定することと、本番環境 (公開している Web サイト) で jquery-latest.js を読み込むのをやめてくれというアナウンスを行っています。

Don't Use jquery-latest.js : Official jQuery Blog

Earlier this week the jQuery CDN had an issue that made the jquery-latest.js and jquery-latest.min.js files unavailable for a few hours in some geographical areas. (This wasn't a problem with the CDN itself, but with the repository that provides files for the CDN.) While we always hope to have 100% uptime, this particular outage emphasized the number of production sites following the antipattern of using this file. So let's be clear: Don't use jquery-latest.js on a production site.

Don't Use jquery-latest.js : Official jQuery Blog から引用

きっかけは先週初めに発生した、jquery-latest.js と jquery-latest.min.js が CDN から数時間にわたり配信できなくなる障害のようですが、これを機にあらためてはっきり言っておくけど・・・・・・ という感じで 「本番環境で jquery-latest.js を使用しないでください」 とアナウンスしています。

以降、ちょっと全訳に近くなっちゃう感じですが要点を簡単に。

We know that jquery-latest.js is abused because of the CDN statistics showing it's the most popular file. That wouldn't be the case if it was only being used by developers to make a local copy. The jquery-latest.js and jquery-latest.min.js files were meant to provide a simple way to download the latest released version of jQuery core. Instead, some developers include this version directly in their production sites, exposing users to the risk of a broken site each time a new version of jQuery is released. The team tries to minimize those risks, of course, but the jQuery ecosystem is so large that we can't possibly check it all before making a new release.

CDN へのリクエスト統計を見ると、jquery-latest.js が最もリクエストされているファイルだと言うことがわかるし、jquery-latest.js / jquery-latest.min.js の両ファイルは、手軽に最新版の jQuery を取得できるから便利なのはわかるけど、本番環境でこれを使っている開発者は、jQuery のバージョンアップの度に Web サイトが動作しなくなる危険をユーザーに与えてるんだよってこと、jQuery の開発チームはもちろん互換性を最大限保とうと努力はしてるけど、それも完全ではないですよということ。

To mitigate the risk of "breaking the web", the jQuery team decided back in 2013 that jquery-latest.js could not be upgraded to the 2.0 branch even though that is technically the latest version. There would just be too many sites that would mysteriously stop working with older versions of Internet Explorer, and many of those sites may not be maintained today.

「Web をぶっ壊す」 リスクを考えて、jQuery チームは jquery-latest.js を 2.0 系にアップグレードすることができていない(jQuery 2.0 は IE 6/7/8 への対応をやめているため、影響が大きすぎると)。

As jQuery adoption has continued to grow, even that safeguard seems insufficient to protect against careless use of http://code.jquery.com/jquery-latest.js. So we have decided to stop updating this file, as well as the minified copy, keeping both files at version 1.11.1 forever. The latest released version is always available through either the jQuery core download page or the CDN home page. Developers can download the latest version from one of those pages or reference it in a script tag directly from the jQuery CDN by version number.

jQuery の利用者が今後増えていくことを考えると、1.x 系だとしても jquery-latest.js をアップデートしていくのは危険が伴う。なので、jquery-latest.js と jquery-latest.min.js を 1.11.1 に固定し、今後はアップデートをしていかないことに決めた。

もちろん、jQuery のダウンロードページや、CDN からは、常に最新のバージョンを取得可能なことに変わりはない。ただし、CDN から呼び出す場合はバージョンを明確に指定する必要がある。

The Google CDN team has joined us in this effort to prevent inadvertent web breakage and no longer updates the file at http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js. That file will stay locked at version 1.11.1 as well. However, note that this file currently has a very short cache time, which means you're losing the performance benefit of of a long cache time that the CDN provides when you request a full version like 1.11.1 instead.

Google CDN もこの考え方に賛同してくれて、

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>

のような形式で呼び出される jQuery のバージョンを 1.11.1 に固定することになった (従来、この呼び出し方だと 1 系の最新版が取得できたのですが)。

また、このファイルは、キャッシュが非常に短く設定されることにも注意して欲しい (つまりこの呼び出し方をしていると Web サイトのパフォーマンスにも悪影響があるよ)。バージョンを明確に指定してリクエストすれば、キャッシュ設定も通常通りとなる。

So please spread the word! If you see a site directly using the jQuery CDN's jquery-latest.js or the Google CDN equivalent in their script tags, let them know they should change to a specific version. If you need the latest version, get it from the download page or our CDN page. For both the jQuery and Google CDNs, always provide a full version number when referencing files in a <script> tag. Thanks!

ということで、CDN から取得する場合にはバージョンを明確に指定してほしい。そしてこのことを周知してもらいたい。

まとめ

  • 今後は、下記のような記述で最新版を呼び出そうとしても、1.11.1 が配信され、最新版にはならない。
  • また、Google CDN の場合はこの呼び出し方をするとキャッシュが短く設定されるので、パフォーマンスにも悪影響を与える。

ということで、もし現状、下記のような指定で利用している場合は注意しましょう。

<!-- Google CDN -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
 
<!-- jQuery CDN -->
<script src="//code.jquery.com/jquery-latest.js"></script>
<script src="//code.jquery.com/jquery-latest.min.js"></script>

今後は、下記のようにバージョンを明確に指定して記述するようにしましょう。あるいは、「Download jQuery」 のページから最新版を取得して使うことも可能です。

<!-- Google CDN -->
<!-- 1.x 系 -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- 2.x 系 -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
 
<!-- jQuery CDN -->
<!-- 1.x 系 -->
<script src="//code.jquery.com/jquery-1.11.1.js"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<!-- 2.x 系 -->
<script src="//code.jquery.com/jquery-2.1.1.js"></script>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>

関連エントリー

Recent Entry

全ての記事一覧を見る

Hot Entry

逆引きおすすめエントリー