Chrome 103 の新機能

必知事項は次のとおりです。

  • 新しい HTTP 103 ステータス コードを使用すると、ページへのアクセスを開始する前に、どのコンテンツをプリロードするかをブラウザが判断できます。
  • Local Font Access API を使用すると、ウェブ アプリケーションでユーザーのパソコンにインストールされているフォントを列挙して使用できます。
  • AbortSignal.timeout() を使用すると、非同期 API でタイムアウトを簡単に実装できます。
  • 他にもたくさんあります。

ピート ルページです。Chrome 103 のデベロッパー向け新機能を 見ていきましょう

HTTP 103 ステータス コード 103 - 早期ヒント

ページのパフォーマンスを向上させる 1 つの方法は、リソースヒントを使用することです。これらは、後で必要になる可能性のあるものをブラウザに「ヒント」を与えます。たとえば、ファイルのプリロードや、別のサーバーへの接続などです。

<link as="font" crossorigin="anonymous"
      href="..." rel="preload">
<link as="font" crossorigin="anonymous"
      href="..." rel="preload">
<link href="cdn.example.com"
      rel="preconnect">

ただし、ブラウザは、サーバーがページの少なくとも一部を送信するまで、これらのヒントを処理できません。

ブラウザがページをリクエストし、サーバーがそのページを生成するのに数百ミリ秒かかるとします。ブラウザはページの受信を開始するまで そのまま待機しますただし、サーバーが常に特定のサブリソース セット(CSS ファイル、JavaScript、画像など)を必要とすることを認識している場合、サーバーはすぐに新しい HTTP 103 Early Hints ステータス コードを返し、それらのサブリソースをプリロードするようブラウザに要求できます。

サーバーがページを生成したら、通常の HTTP 200 レスポンスでページを送信できます。ページが開くと、ブラウザは必要なリソースの読み込みをすでに開始しています。

これは新しい HTTP ステータス コードであるため、使用するにはサーバーを更新する必要があります。

HTTP 103 の早期ヒントを使ってみる:

Local Font Access API

ウェブ上のフォントは常に課題であり、ユーザーが独自のグラフィックやデザインを作成できるアプリでは特にそうです。これまでウェブアプリでは ウェブフォントしか使用できませんでしたユーザーがパソコンにインストールしたフォントのリストを取得する方法はありませんでした。また、完全なフォント テーブルデータにアクセスする方法がありませんでした。これは、独自のカスタム テキスト スタックを実装する必要がある場合に重要です。

新しい Local Font Access API を使用すると、ウェブ アプリケーションはユーザーのデバイス上のローカル フォントを列挙し、フォント テーブル データにアクセスできます。

デバイスにインストールされているフォントのリストを取得するには、まず権限をリクエストする必要があります。

// Ask for permission to use the API
try {
  const status = await navigator.permissions.request({
    name: 'local-fonts',
  });
  if (status.state !== 'granted') {
    throw new Error('No Permission.');
  }
} catch (err) {
  if (err.name !== 'TypeError') {
    throw err;
  }
}

次に、window.queryLocalFonts() を呼び出します。ユーザーのデバイスにインストールされているすべてのフォントの配列を返します。

const opts = {};
const pickedFonts = await self.queryLocalFonts();
for (const fontData of pickedFonts) {
  console.log(fontData.postscriptName);
  console.log(fontData.fullName);
  console.log(fontData.family);
  console.log(fontData.style);
}

フォントのサブセットのみが必要な場合は、postscriptNames パラメータを追加してフィルタできます。

const opts = {
  postscriptNames: [
    'Verdana',
    'Verdana-Bold',
    'Verdana-Italic',
  ],
};
const pickedFonts = await self.queryLocalFonts(opts);

詳細については、web.dev で Tom の記事ローカル フォントで高度なタイポグラフィを使用するをご覧ください。

AbortSignal.timeout() を使用したタイムアウトの簡素化

JavaScript では、非同期呼び出しをキャンセルするために AbortControllerAbortSignal を使用します。

たとえば、fetch() リクエストを行う場合は、AbortSignal を作成して fetch() に渡すことができます。戻る前に fetch() をキャンセルする場合は、AbortSignal のインスタンスで abort() を呼び出します。これまでは、一定の時間が経過した後に中止する場合は、setTimeout() でラップする必要があります。

const controller = new AbortController();
const signal = controller.signal;
const resp = fetch(url, { signal });

setTimeout(() => {
  // abort the fetch after 6 seconds
  controller.abort();
}, 6000);

幸い、AbortSignal の新しい timeout() 静的メソッドにより、これを簡単に実行できます。指定されたミリ秒数後に自動的に中止される AbortSignal オブジェクトを返します。これまで数行のコードでしたが、今では 1 つになりました。

const signal = AbortSignal.timeout(6000);
const resp = fetch(url, { signal });

AbortSignal.timeout() は Chrome 103 でサポートされており、Firefox と Safari ではすでにサポートされています。

など多数

他にもたくさんあります。

  • avif の画像ファイル形式をウェブ共有で共有できるようになりました
  • Chromium では、URL が変更された直後に popstate を起動することで、Firefox と一致させるようになりました。両方のプラットフォームでイベントの順序は popstatehashchange の順になります。
  • また、Element.isVisible() は要素が可視かどうかを示します。

関連情報

ここでは、重要なハイライトの一部についてのみ説明します。Chrome 103 で追加される変更点については、以下のリンクをご覧ください。

登録

最新情報を入手するには、Chrome Developers YouTube チャンネル登録してください。新しい動画が公開されるたびに、メール通知が届きます。

Chrome 104 のリリースと同時に Chrome の最新情報をお伝えします