DeskRex.ai

open α

テーマ

データベース

自動化

発見

サインイン

リサーチの結果の保存、レポートの作成、共有が行えます。

サインイン

レポートの一覧に戻る

Cloudflare WorkersでReactを動かす!静的サイトからSSRまで環境構築完全ガイド

🗓 Created on 7/28/2025

  • 📜要約
  • 📊ビジュアライズ
  • 🖼関連する画像
  • 🔍詳細
    • 🏷静的から動的、SSRまで:Cloudflare Workersでの実行パターン3選
    • 🏷まずはここから!ReactやHTMLを静的サイトとして高速配信する基本手順
    • 🏷高速化とSEOを実現:ViteやHonoを活用したSSR環境構築と動的HTML操作
    • 🏷開発効率と性能を最大化する実践テクニック:デバッグ、CI/CD、最適化
  • 🖍考察
  • 📚参考文献
    • 📖利用された参考文献
    • 📖未使用の参考文献
    • 📊ドメイン統計

📜 要約

主題と目的

この調査の主題は、Cloudflare Workersを利用してReactやHTMLで構築されたウェブアプリケーションの実行環境を構築する方法です。目的は、最も基本的な静的サイトのホスティングから、サーバーサイドレンダリング(SSR)のような高度な環境構築、さらには開発ワークフローの効率化やパフォーマンス最適化に至るまで、包括的かつ実践的な手順と知識を提供することです。これにより、開発者は自身のプロジェクト要件に最適なアプローチを選択し、Cloudflare Workersの能力を最大限に活用できるようになることを目指します。

回答

Cloudflare Workersでウェブアプリを実行する魅力

Cloudflare Workersは、単なるサーバーレス関数プラットフォームから、高機能なウェブアプリケーション実行環境へと進化を遂げています。特筆すべきは、Cloudflare自身が新規プロジェクトにおいて、従来の静的ホスティングサービス「Cloudflare Pages」よりもWorkersの利用を推奨する方針を打ち出している点です
zenn.dev
。これは、Workersが持つ圧倒的な柔軟性、拡張性、そしてCloudflareの他のサービスとの統合性の高さが、現代のウェブ開発に不可欠であると認識されていることを示しています。
本稿では、ReactやHTMLサイトをWorkers上で実行するための環境構築方法を、3つのステップに分けて具体的に解説します。

ステップ1:基本の静的サイトホスティング

最も手軽で一般的な方法が、ビルド済みの静的なHTML、CSS、JSファイルをホスティングする「Workers Sites」です。JAMstackアーキテクチャ
qiita.com
と非常に相性が良く、ブログやコーポレートサイトに最適です。
必要な準備
開発を始める前に、以下のツールを準備してください。
  1. Cloudflareアカウント: 公式サイトから無料でサインアップします
    cloudflare.com
    。
  2. Node.js: バージョン16.17.0以降をインストールします
    cloudflare.com
    。
  3. Wrangler CLI: Cloudflare Workers用のコマンドラインツールです。以下のコマンドでインストールします
    howtogeek.com
    。
    npm install -g @cloudflare/wrangler
    
構築手順(パターン別)
  • パターン1: React製SPA(シングルページアプリケーション)をホストする 最も簡単な方法は、Cloudflareが提供する公式テンプレートを利用することです
    cloudflare.com
    。
    npm create cloudflare@latest my-react-app -- --framework=react
    
    既存のプロジェクトがある場合は、
    wrangler.toml
    ファイルに以下の設定を追加します。
    not_found_handling
    の設定により、React Routerなどのクライアントサイドルーティングが正しく機能します
    cloudflare.com
    。
    # wrangler.toml
    name = "my-react-spa"
    compatibility_date = "2025-01-01"
    
    [assets]
    directory = "./build" # Reactアプリのビルド出力ディレクトリ
    not_found_handling = "single-page-application"
    
  • パターン2: シンプルなHTMLサイトをホストする 素のHTML、CSS、JavaScriptで構成されたサイトの場合、
    wrangler.jsonc
    ファイルを作成し、アセットのディレクトリを指定するだけで設定は完了です
    zenn.dev
    。
    // wrangler.jsonc
    {
      "name": "my-static-site",
      "compatibility_date": "2025-05-06",
      "assets": {
        "directory": "./"
      }
    }
    
ローカル確認とデプロイ
  1. ローカルプレビュー:
    npx wrangler dev
    を実行し、ローカルサーバーで動作を確認します
    cloudflare.com
    。
  2. デプロイ:
    npx wrangler deploy
    を実行し、サイトをCloudflareのグローバルネットワークに公開します
    cloudflare.com
    。

ステップ2:動的要素の導入と高度なレンダリング

静的サイトの高速性を維持しつつ、よりリッチでインタラクティブな体験を提供するための高度な手法を紹介します。
選択肢1:
HTMLRewriter
によるエッジでの動的書き換え
HTMLRewriter
は、オリジンサーバーから返されたHTMLや静的HTMLを、エッジ(ユーザーに最も近いサーバー)でストリーミングしながら書き換えるCloudflare Workers独自の強力なAPIです
reffect.co.jp
。
  • 仕組み: CSSセレクタでHTML要素をターゲットにし、内容や属性を動的に変更します。
  • メリット: クライアントサイドのJavaScriptに頼ることなく、パーソナライズ(例:ログイン状態の表示切替)やA/Bテストを、パフォーマンスへの影響を最小限に抑えて実現できます。レンダリングブロックや表示の「ちらつき」も防げます
    reffect.co.jp
    。
選択肢2: サーバーサイドレンダリング (SSR)
初期表示速度の向上やSEO対策が重要なアプリケーションではSSRが不可欠です。モダンなツールを組み合わせることで、Workers上で本格的なSSR環境を構築できます。
ツール / フレームワーク特徴最適な用途
React Router (旧Remix)Cloudflareが公式にサポートするフルスタックフレームワーク。
create-cloudflare
CLIで簡単に環境を構築可能1。
安定した公式サポートとCloudflareのエコシステムを最大限に活用したい本格的なアプリケーション。
Hono + Vite軽量で柔軟なWebフレームワークHono
pixiv.blog
と高速ビルドツールViteの組み合わせ。ほぼ「素のReact」に近い感覚でSSRを構築可能
zenn.dev
。
フレームワークの規約に縛られず、独自の構成で軽量なSSR環境を構築したい場合。
vite-plugin-ssrSSRだけでなく静的サイト生成(SSG)もサポートする汎用的なViteプラグイン。Next.jsは大規模すぎると感じる場合に最適
zenn.dev
。
Next.jsの複雑さを避けつつ、SSR/SSGやファイルベースルーティングなどモダンな機能を使いたい場合。

ステップ3:開発効率とパフォーマンスの最大化

環境構築後の運用フェーズでは、開発効率とアプリケーション性能を高めるためのテクニックが重要になります。
効率的なデバッグ
  • ローカル開発:
    wrangler dev
    コマンドでローカルサーバーを起動し、即座にコードの変更をテストできます
    cloudflare.com
    。
  • DevTools連携:
    wrangler dev
    の実行中にターミナルで
    D
    キーを押すだけでChrome DevToolsが起動し、コンソールログの確認やパフォーマンスのプロファイリングが可能です
    cloudflare.com
    。
  • ブレークポイント: VS Codeに特定の設定
    cloudflare.com
    を追加することで、ブレークポイントを使った高度なデバッグが実現します。
CI/CDによるデプロイ自動化
GitHub ActionsとCloudflare公式の
wrangler-action
github.com
を組み合わせることで、デプロイの完全自動化が可能です。
  • 認証情報: CloudflareのAPIトークンとアカウントIDは、GitHubリポジトリのSecrets機能を使って安全に管理します
    cloudflare.com
    。
  • 機密情報管理: 機密情報を含む
    wrangler.toml
    ファイルはリポジトリに含めず、その内容全体をGitHub Secretsに保存し、ワークフロー実行時に動的にファイルを生成するアプローチが安全かつ効果的です
    zenn.dev
    。
パフォーマンス最適化
  • キャッシュ戦略: 動的に生成されたHTMLをキャッシュすることで、応答速度を劇的に改善できます。
キャッシュ方法特徴推奨ユースケース
Cache APIWorkerが実行されたデータセンターにのみキャッシュを保存。高速だがグローバルな一貫性はない
zenn.dev
。
高速なレスポンスが最優先で、グローバルでの一貫性が厳密には不要な場合。
Workers KVグローバルに分散されたKVS。世界中のどこからでも高速に読み取れる
cloudflare.com
。
高いキャッシュヒット率やグローバルな状態共有が求められる場合。Next.jsのISRなどで推奨
cloudflare.com
。
  • バンドルサイズ最適化: Cloudflare Pagesのファイルサイズ上限(25MiB)
    developersteve.com
    などを回避するため、バンドルサイズを小さく保つことが重要です。ビルドプロセスをGitHub Actions上で行い、生成された静的ファイルのみをデプロイする手法が有効です
    developersteve.com
    。

結果と結論

調査の結果、Cloudflare Workersは、単純な静的サイトホスティングから、
HTMLRewriter
による動的なHTML書き換え、さらにはReact RouterやHonoを用いた本格的なサーバーサイドレンダリング(SSR)まで、非常に多様なウェブアプリケーションの実行環境を構築できる、柔軟で強力なプラットフォームであることが明らかになりました。
結論として、Cloudflare Workersは現代のウェブ開発において極めて魅力的な選択肢です。プロジェクトの要件に応じて、シンプルな静的ホスティングから始め、必要に応じてSSRへと段階的に進化させることができます。Wrangler CLIやViteプラグイン、DevTools連携といった充実した開発者ツールは優れた開発体験を提供し、CI/CDの導入や高度なキャッシュ戦略、バンドルサイズ最適化といった実践的なテクニックを組み合わせることで、スケーラブルで高性能、かつ運用性に優れたアプリケーションの構築が可能です。この柔軟性と拡張性こそが、Cloudflare Workersを際立たせる最大の強みと言えるでしょう。

コード実行

import React from 'react';

const App = () => {

  const approaches = [
    {
      name: '静的サイト (SPA)',
      description: 'ビルド済みのHTML、CSS、JSファイルをデプロイする最もシンプルな方法です。',
      useCase: '基本的なWebサイト、ポートフォリオ、ドキュメントサイトなど、コンテンツの更新が少ない場合に最適です。',
      difficulty: '易しい',
      tools: 'Wrangler CLI, create-react-appなど',
      ref: 'https://developers.cloudflare.com/workers/static-assets/',
      ref_text: 'Static Assets - Workers Docs'
    },
    {
      name: 'HTMLRewriter API',
      description: '配信するHTMLをエッジで動的に書き換えます。',
      useCase: 'A/Bテスト、ユーザーごとのコンテンツパーソナライズ、動的なOGP設定など、静的コンテンツに動的要素を加えたい場合に有効です。',
      difficulty: '中程度',
      tools: 'HTMLRewriter API',
      ref: 'https://developers.cloudflare.com/workers/runtime-apis/html-rewriter/',
      ref_text: 'HTMLRewriter - Workers Docs'
    },
    {
      name: 'サーバーサイドレンダリング (SSR)',
      description: 'Reactアプリケーションをエッジサーバー上で直接レンダリングします。',
      useCase: '初期表示速度の向上やSEO対策が重要なWebアプリケーション、動的なデータが多いサービスに適しています。',
      difficulty: '難しい',
      tools: 'React Router, Hono, Viteなど',
      ref: 'https://developers.cloudflare.com/workers/framework-guides/web-apps/react-router/',
      ref_text: 'React Router - Workers Docs'
    }
  ];

  const ssrTools = [
    {
      tool: 'React Router v7 + Vite Plugin',
      feature: 'Cloudflare公式推奨のフルスタック構成。`create-cloudflare` CLIで簡単に環境を構築可能。開発サーバーがWorkersランタイムで動作するため、本番環境との差異が少ないです。',
      recommendation: '安定した公式サポートを求め、フルスタックな機能を活用したい開発者。',
      reference_text: 'React Router Docs',
      reference_url: 'https://developers.cloudflare.com/workers/framework-guides/web-apps/react-router/'
    },
    {
      tool: 'Hono + Vite',
      feature: '軽量で柔軟なWebフレームワークHonoを使用。大規模フレームワークに頼らず、ほぼ「素のReact」でSSRを構築可能です。`renderToReadableStream`でストリーミングにも対応。',
      recommendation: 'フレームワークの規約に縛られず、独自の構成で軽量なSSR環境を構築したい開発者。',
      reference_text: 'Zenn Article',
      reference_url: 'https://zenn.dev/sora_kumo/articles/hono-ssr-react'
    },
    {
      tool: 'vite-plugin-ssr',
      feature: '汎用性が高いViteプラグイン。SSRだけでなく、SSGやSPAなど、1つのコードベースで多様なレンダリングモードをサポートします。',
      recommendation: '複数のレンダリング戦略(SSR/SSG/SPA)を柔軟に使い分けたい、またはミニマムな構成から始めたい開発者。',
      reference_text: 'vite-plugin-ssr Docs',
      reference_url: 'https://vite-plugin-ssr.com/cloudflare-workers'
    }
  ];
  
  const cacheStrategies = [
      {
          method: 'Cache API',
          feature: 'Workerが動作したデータセンターにのみキャッシュを保存。データセンター間の同期はありません。',
          useCase: '高速なローカルキャッシュが必要で、グローバルな一貫性が厳密には求められない場合。',
          ref_text: 'zenn.dev',
          ref_url: 'https://zenn.dev/chimame/articles/7570c71d1e6c38'
      },
      {
          method: 'Workers KV',
          feature: 'グローバルに分散されたキーバリューストア。書き込みには少し時間がかかるが、どこからでも読み取り可能です。',
          useCase: '高いキャッシュヒット率が求められる場合や、Next.jsのISRのように状態をグローバルに共有したい場合。Cloudflareも推奨。',
          ref_text: 'Cloudflare Docs',
          ref_url: 'https://developers.cloudflare.com/pages/framework-guides/nextjs/ssr/caching/'
      }
  ];

  return (
    <div className="bg-gray-900 text-white min-h-screen font-sans p-4 sm:p-6 md:p-8">
      <div className="max-w-7xl mx-auto">

        <header className="text-center mb-12">
          <h1 className="text-4xl md:text-5xl font-bold mb-2 bg-clip-text text-transparent bg-gradient-to-r from-orange-400 to-orange-600">Cloudflare Workers 実行環境構築ガイド</h1>
          <p className="text-lg text-gray-400">React & HTMLアプリケーションのホスティング方法</p>
        </header>

        <section id="approaches" className="mb-16">
          <h2 className="text-3xl font-bold mb-8 text-center">構築アプローチの選択肢</h2>
          <div className="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
            {approaches.map((approach, index) => (
              <div key={index} className="bg-gray-800 rounded-lg p-6 border border-gray-700 hover:border-orange-500 transition-all duration-300 transform hover:-translate-y-1">
                <h3 className="text-2xl font-semibold mb-3 text-orange-400">{approach.name}</h3>
                <p className="text-gray-300 mb-4">{approach.description}</p>
                <p className="text-sm text-gray-400 mb-4"><strong>ユースケース:</strong> {approach.useCase}</p>
                <div className="text-sm text-gray-400 mb-4">
                  <p><strong>構築難易度:</strong> <span className={`font-bold ${approach.difficulty === '易しい' ? 'text-green-400' : approach.difficulty === '中程度' ? 'text-yellow-400' : 'text-red-400'}`}>{approach.difficulty}</span></p>
                  <p><strong>主要ツール:</strong> {approach.tools}</p>
                </div>
                <a href={approach.ref} target="_blank" rel="noopener noreferrer" className="text-blue-400 hover:text-blue-300 underline text-sm">{approach.ref_text}</a>
              </div>
            ))}
          </div>
        </section>

        <section id="ssr-tools" className="mb-16">
          <h2 className="text-3xl font-bold mb-8 text-center">SSR実現のためのツールスタック比較</h2>
          <div className="overflow-x-auto">
              <table className="w-full text-left border-collapse">
                  <thead>
                      <tr>
                          <th className="border-b-2 border-gray-700 p-4 bg-gray-800">ツール/フレームワーク</th>
                          <th className="border-b-2 border-gray-700 p-4 bg-gray-800">特徴</th>
                          <th className="border-b-2 border-gray-700 p-4 bg-gray-800">推奨される開発者</th>
                          <th className="border-b-2 border-gray-700 p-4 bg-gray-800">参考文献</th>
                      </tr>
                  </thead>
                  <tbody>
                      {ssrTools.map((tool, index) => (
                          <tr key={index} className="bg-gray-800/50 hover:bg-gray-700/50 transition-colors">
  <td className="border-b border-gray-700 p-4 font-semibold text-orange-400">{tool.tool}</td>
  <td className="border-b border-gray-700 p-4 text-gray-300">{tool.feature}</td>
  <td className="border-b border-gray-700 p-4 text-gray-300">{tool.recommendation}</td>
  <td className="border-b border-gray-700 p-4"><a href={tool.reference_url} target="_blank" rel="noopener noreferrer" className="text-blue-400 hover:text-blue-300 underline">{tool.reference_text}</a></td>
                          </tr>
                      ))}
                  </tbody>
              </table>
          </div>
        </section>

        <section id="workflow" className="mb-16">
            <h2 className="text-3xl font-bold mb-8 text-center">開発からデプロイまでのワークフロー</h2>
            <div className="grid md:grid-cols-3 gap-8 text-center">
                <div className="bg-gray-800 p-6 rounded-lg border border-gray-700">
                    <h3 className="text-2xl font-semibold mb-3 text-orange-400">1. ローカル開発 & デバッグ</h3>
                    <ul className="text-left list-disc list-inside text-gray-300 space-y-2">
                        <li><code className="bg-gray-700 text-sm p-1 rounded">wrangler dev</code>でローカル実行 <a href="https://developers.cloudflare.com/workers/development-testing/" target="_blank" rel="noopener noreferrer" className="text-blue-500 underline hover:text-blue-700">[ref]</a></li>
                        <li>ブラウザDevToolsでデバッグ <a href="https://developers.cloudflare.com/workers/observability/dev-tools/" target="_blank" rel="noopener noreferrer" className="text-blue-500 underline hover:text-blue-700">[ref]</a></li>
                        <li>VS Codeでブレークポイントデバッグ <a href="https://developers.cloudflare.com/workers/observability/dev-tools/breakpoints/" target="_blank" rel="noopener noreferrer" className="text-blue-500 underline hover:text-blue-700">[ref]</a></li>
                    </ul>
                </div>
                 <div className="bg-gray-800 p-6 rounded-lg border border-gray-700">
                    <h3 className="text-2xl font-semibold mb-3 text-orange-400">2. CI/CDによる自動化</h3>
                    <p className="text-gray-300 mb-4">GitHub Actionsでビルドとデプロイを自動化します。</p>
                    <a href="https://developers.cloudflare.com/workers/ci-cd/external-cicd/github-actions/" target="_blank" rel="noopener noreferrer" className="text-blue-400 hover:text-blue-300 underline text-sm">GitHub Actions連携ガイド</a>
                </div>
                <div className="bg-gray-800 p-6 rounded-lg border border-gray-700">
                    <h3 className="text-2xl font-semibold mb-3 text-orange-400">3. パフォーマンス最適化</h3>
                    <p className="text-gray-300 mb-4">キャッシュ戦略とバンドルサイズ最適化で応答速度を向上させます。</p>
                     <a href="https://speakerdeck.com/yoshiitaka/new-options-for-caching-dynamic-content-with-cloudflare-workers" target="_blank" rel="noopener noreferrer" className="text-blue-400 hover:text-blue-300 underline text-sm">動的コンテンツのキャッシュ</a>
                </div>
            </div>
            <div className="bg-gray-800 rounded-lg p-6 mt-8 border border-gray-700">
                <h4 className="text-xl font-semibold mb-4">GitHub Actions ワークフロー例</h4>
                <pre className="bg-gray-900 text-left text-sm text-white p-4 rounded-md overflow-x-auto">
                    <code>
{`name: Deploy
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${\{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${\{ secrets.CLOUDFLARE_ACCOUNT_ID }}
`}
                    </code>
                </pre>
                <p className="text-xs text-gray-500 mt-2">出典: <a href="https://developers.cloudflare.com/workers/ci-cd/external-cicd/github-actions/" target="_blank" rel="noopener noreferrer" className="underline">Cloudflare Docs</a></p>
            </div>
        </section>
        
        <section id="optimization" className="mb-16">
          <h2 className="text-3xl font-bold mb-8 text-center">パフォーマンス最適化手法</h2>
          <div className="grid md:grid-cols-2 gap-8">
              <div className="bg-gray-800 p-6 rounded-lg border border-gray-700">
                  <h3 className="text-2xl font-semibold mb-4 text-orange-400">キャッシュ戦略</h3>
                  <div className="overflow-x-auto">
                    <table className="w-full text-left border-collapse">
                        <thead>
                            <tr>
  <th className="border-b-2 border-gray-700 p-3 bg-gray-900">方法</th>
  <th className="border-b-2 border-gray-700 p-3 bg-gray-900">特徴</th>
  <th className="border-b-2 border-gray-700 p-3 bg-gray-900">ユースケース</th>
  <th className="border-b-2 border-gray-700 p-3 bg-gray-900">出典</th>
                            </tr>
                        </thead>
                        <tbody>
                            {cacheStrategies.map((strategy, index) => (
  <tr key={index} className="bg-gray-800/50 hover:bg-gray-700/50 transition-colors">
  <td className="border-b border-gray-700 p-3 font-semibold">{strategy.method}</td>
  <td className="border-b border-gray-700 p-3 text-gray-300">{strategy.feature}</td>
  <td className="border-b border-gray-700 p-3 text-gray-300">{strategy.useCase}</td>
  <td className="border-b border-gray-700 p-3"><a href={strategy.ref_url} target="_blank" rel="noopener noreferrer" className="text-blue-400 hover:text-blue-300 underline text-sm">{strategy.ref_text}</a></td>
  </tr>
                            ))}
                        </tbody>
                    </table>
                  </div>
                  <p className="text-sm text-gray-400 mt-4">stale-while-revalidate (SWR) 戦略もWorkerでカスタム実装可能です。<a href="https://gist.github.com/wilsonpage/a4568d776ee6de188999afe6e2d2ee69" target="_blank" rel="noopener noreferrer" className="text-blue-500 underline hover:text-blue-700">[実装例]</a></p>
              </div>
              <div className="bg-gray-800 p-6 rounded-lg border border-gray-700">
                  <h3 className="text-2xl font-semibold mb-4 text-orange-400">バンドルサイズの最適化</h3>
                  <p className="text-gray-300 mb-4">Cloudflareプラットフォームにはファイルサイズ制限があるため、バンドルを小さく保つことが重要です。<a href="https://blog.developersteve.com/overcoming-the-cloudflare-asset-file-limit-using-github-actions-145a87215004" target="_blank" rel="noopener noreferrer" className="text-blue-500 underline hover:text-blue-700">[制限回避例]</a></p>
                  <ul className="list-disc list-inside text-gray-300 space-y-2">
                      <li>
                          <strong>ツリーシェイキング (Tree Shaking):</strong> 未使用のコードを最終的なバンドルから削除します。ES6モジュールでインポートすることで効果を発揮します。<a href="https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/tree-shaking/" target="_blank" rel="noopener noreferrer" className="text-blue-500 underline hover:text-blue-700">[Sentryの例]</a>
                      </li>
                      <li>
                          <strong>ビルドプロセスの分離:</strong> GitHub Actionsなどでビルドを行い、生成された静的アセットのみをデプロイすることで、Cloudflare環境の制限を回避します。
                      </li>
                  </ul>
              </div>
          </div>
        </section>
        
      </div>
    </div>
  );
}

export default App;

🖼 関連する画像

Image for cmdn63b1i002no45mjhsq8taq
Image for cmdn63b1i002oo45mqblwymos
Image for cmdn63b1i002po45mxw0xnwjp
Image for cmdn63b1i002qo45mmkbrpkkk
Image for cmdn63b1i002ro45m2rljtgz2
Image for cmdn63b1i002so45mdgt0jjyf
Image for cmdn6eoly00aho45mb80rflx6
Image for cmdn63b1j002uo45m3nn9dn8l
Image for cmdn63b1j002vo45mwadw5tit
Image for cmdn63b1j002wo45m0rf1ayey
Image for cmdn63dgp003bo45mui6h4e36
Image for cmdn63dgr0042o45m7kynjyd4
Image for cmdn63dgp003do45m0u8c0ppa
Image for cmdn63dgp003eo45mogj6c2y8
Image for cmdn63dgp003fo45majjtyxs7
Image for cmdn6eolw009bo45m24lz180t
Image for cmdn63dgp003ho45ml7xpoxk4
Image for cmdn63dgp003io45mkvbsys1x
Image for cmdn63dgp003jo45m6hfu3zsa
Image for cmdn63dgq003ko45mljlw9dyl
Image for cmdn63dgr003vo45md98mcxu6
Image for cmdn63dgr003wo45mu20mop6q
Image for cmdn6eolz00ano45myaj5vyy6
Image for cmdn63dgr003yo45mnqunk0la
Image for cmdn63dgr003zo45myfqchsbw
Image for cmdn63dgr0040o45mj3vu04lb
Image for cmdn63dgr0041o45mjf228fc9
Image for cmdn63dgr0043o45mzd1cgok5
Image for cmdn68e5l0066o45mpookikot
Image for cmdn68e5l0067o45mry4wq79b
Image for cmdn68e5l0068o45miiqoncar
Image for cmdn68e5l006ao45m8l4wbcbc
Image for cmdn68e5m006bo45mpivrxhm1
Image for cmdn68e5m006co45mhh781iah
Image for cmdn68e5m006do45mhqzwwufi
Image for cmdn68e5m006fo45mevdyj6ct
Image for cmdn68e5n006qo45mtmlgjsgj
Image for cmdn68gfx007do45m6285tkqa
Image for cmdn6es2p00bmo45mip3vhxb9
Image for cmdn68gfy007jo45mtki0ap3s
Image for cmdn68e5n006wo45mdkp82xki
Image for cmdn68e5n006xo45mq1chx3bi
Image for cmdn68e5n006yo45m1snqg87n
Image for cmdn6es2p00bto45m3zqm3qcl
Image for cmdn68e5n006to45mtzothhta
Image for cmdn68gfx007bo45mrjixjh1u
Image for cmdn68gfx007co45m2lvld6mv
Image for cmdn68gfy007eo45m8bzuv6mw
Image for cmdn68gfy007fo45mywoz4i2v
Image for cmdn68gfy007go45mtl3jkifs
Image for cmdn68gfy007ho45m0mgu0act
Image for cmdn68gfy007io45m34qn7ej4
Image for cmdn68gfy007ko45m73c6gm63
Image for cmdn68gfz007vo45mgpj29f37
Image for cmdn68gfz007wo45m5k70iw8z
Image for cmdn68gfz007xo45mxpmhp6c8
Image for cmdn68gg0007yo45m01xlxvd1
Image for cmdn68gg0007zo45mhy8z4xnt
Image for cmdn68gg00080o45mc891wox2
Image for cmdn68gg00081o45me4hwy7o8
Image for cmdn68gg00082o45mxpzdvjg5
Image for cmdn68gg00083o45m4inm3bc6
Image for cmdn68gg00084o45mslm1gcqo
Image for cmdn6eolw009co45mj7ls6xaj
Image for cmdn6eolw009do45mdb3w4mrn
Image for cmdn6eolw009eo45mwfmpg5a1
Image for cmdn6eolw009fo45m6luzwrwn
Image for cmdn6eolw009go45m7uy11r5g
Image for cmdn6eolw009ho45mysmytr4l
Image for cmdn6eolw009io45m75axuk0l
Image for cmdn6eolw009jo45mmf72sp08
Image for cmdn6eolw009ko45mhyr2exm3
Image for cmdn6eolx009vo45m5m13ty5n
Image for cmdn6eolx009wo45mjmm4ozl1
Image for cmdn6eolx009xo45m9bzqfv9z
Image for cmdn6eolx009yo45mnkgwiu8u
Image for cmdn6eolx009zo45ml5xcivot
Image for cmdn6eolx00a0o45mdenxj9mu
Image for cmdn6eolx00a1o45mpj60wfuk
Image for cmdn6eolx00a2o45mepe4hxym
Image for cmdn6eolx00a3o45m8jpfcwr1
Image for cmdn6eoly00a4o45m7rua50dp
Image for cmdn6eoly00afo45m1dgq5p4u
Image for cmdn6eoly00ago45mq1xf2z6m
Image for cmdn6eoly00aio45mos6m4pmw
Image for cmdn6eoly00ajo45ma7fc7ors
Image for cmdn6eoly00ako45mzvk46gry
Image for cmdn6eoly00alo45m2yl29jq8
Image for cmdn6eolz00amo45m1eapy1h7
Image for cmdn6eolz00aoo45m657eyrat
Image for cmdn6es2n00b0o45mkz2xpe61
Image for cmdn6es2n00b1o45maiajo60c
Image for cmdn6es2o00b2o45m545pqlry
Image for cmdn6es2o00b3o45mfsfyns8b
Image for cmdn6es2o00b4o45m92tz1d33
Image for cmdn6es2o00b5o45m6gn6g24s
Image for cmdn6es2o00b6o45mm6i4cr0q
Image for cmdn6es2o00b7o45mr76thjf4
Image for cmdn6es2o00b8o45mj50pd1og
Image for cmdn6es2o00b9o45mm7x8u3nu
Image for cmdn6es2p00bko45m5gtay2xf
Image for cmdn6es2p00blo45m9lnqbbt0
Image for cmdn6es2p00bno45mbjmen76r
Image for cmdn6es2p00boo45mc7pi1rnk
Image for cmdn6es2p00bpo45mohpc53hb
Image for cmdn6es2p00bqo45m42swpg57
Image for cmdn6es2p00bro45mil5yvupd
Image for cmdn6es2p00bso45m3k11z82m
Image for cmdn6es2q00c4o45mk9wwi0da
Image for cmdn6es2q00c5o45m3f96yujr
Image for cmdn6es2q00c6o45mubvo8f35
Image for cmdn6es2q00c7o45m3l3hhlr0
Image for cmdn6es2q00c8o45mwyomwxv7
Image for cmdn6es2q00c9o45m3gwap1qu
Image for cmdn6es2q00cao45mue0sq9li
Image for cmdn6es2q00cbo45m3ylt3rep
Image for cmdn6es2q00cco45mruce7377
Image for cmdn6es2q00cdo45ms3iw3yqy

このレポートが参考になりましたか?

あなたの仕事の調査業務をワンボタンでレポートにできます。

無料でリサーチ

🔍 詳細

🏷静的から動的、SSRまで:Cloudflare Workersでの実行パターン3選


はい、承知いたしました。 Deskrexの多機能AIアシスタントとして、ご依頼のレポートセクションを作成します。

#### 静的から動的、SSRまで:Cloudflare Workersでの実行パターン3選

Cloudflare Workersは、単なるサーバーレス関数プラットフォームにとどまらず、ReactやプレーンなHTMLで構築されたウェブアプリケーションを実行するための強力な環境を提供します。その実行パターンは、プロジェクトの要件や規模に応じて、シンプルな静的サイトのホスティングから、エッジでの動的なHTML書き換え、さらには本格的なサーバーサイドレンダリング(SSR)まで、多岐にわたります。
注目すべきは、Cloudflare自身が、新規プロジェクトにおいて従来のCloudflare PagesよりもWorkersの利用を推奨する方針を打ち出している点です
zenn.dev
。これは、Workersが持つ柔軟性と拡張性が、現代のウェブ開発において中心的な役割を担うことを示唆しています。
ここでは、あなたのReactアプリケーションをCloudflare Workers上で実行するための、代表的な3つのアプローチを、それぞれの特徴と最適なユースケースと共に詳しく解説します。

パターン1: 静的サイトホスティング - 最もシンプルで高速な配信

これは最も手軽で一般的な方法です。
create-react-app
やViteなどでビルドして生成された静的なHTML、CSS、JavaScriptファイル群を、Cloudflare Workersの機能である「Workers Sites」を利用してデプロイします。
▼仕組みとメリット このアプローチでは、静的アセットはCloudflareのグローバルに分散したキーバリューストア「Workers KV」に保存されます
qiita.com
。ユーザーからのリクエストは、地理的に最も近いエッジロケーションで処理され、KVから直接コンテンツが配信されるため、極めて低遅延で高速な表示が可能です。実際に、Netlifyのような他のホスティングサービスからWorkers Sitesへ移行したことで、パフォーマンスが2倍に向上したという報告もあります
qiita.com
。
この方法は、いわゆるJAMstackアーキテクチャ
qiita.com
と非常に相性が良く、ブログやポートフォリオサイト、企業のコーポレートサイトなど、コンテンツの更新頻度がそれほど高くない場合に最適です。
▼構築方法 構築はCloudflareのCLIツール
wrangler
を使えば驚くほど簡単です。
  1. Reactアプリケーションをビルドします (
    npm run build
    )。
  2. wrangler.jsonc
    (または
    wrangler.toml
    ) に、ビルドされたアセットのディレクトリを指定します
    zenn.dev
    。
  3. wrangler deploy
    コマンドを実行するだけで、デプロイが完了します
    qiita.com
    。
さらに、GitHub Actionsと連携させることで、リポジトリへのプッシュをトリガーにした自動デプロイ(CI/CD)も簡単に実現できます
qiita.com
、
accelia.net
。

パターン2:
HTMLRewriter
による動的コンテンツ挿入 - 静的と動的のハイブリッド

静的サイトの高速性を維持しつつ、一部のコンテンツを動的に変更したい場合に非常に強力なのが、
HTMLRewriter
APIです。これは、エッジでHTMLをストリーミングしながら内容を書き換えることができる、Cloudflare Workers独自の機能です。
▼仕組みとメリット
HTMLRewriter
は、オリジンサーバーから返されたHTMLや、Workers上で生成した静的なHTMLに対して、CSSセレクタを使って特定の要素を捕捉し、その内容や属性をプログラムで変更します。
この手法の最大の利点は、クライアントサイドのJavaScriptに頼ることなく、ユーザーごとにパーソナライズされたコンテンツを表示したり、A/Bテストを実施したりできる点です。サーバーへのリクエストは一度きりで、エッジで動的な処理が完結するため、パフォーマンスへの影響を最小限に抑えられます。
洞察:
HTMLRewriter
は、静的サイトの「静的」という制約を、パフォーマンスを犠牲にすることなく乗り越えるためのエレガントな解決策と言えます。例えば、認証状態に応じてヘッダーの表示を変えたり、ユーザーの地域に基づいてキャンペーンバナーを差し替えたりといった処理を、オリジンサーバーやクライアントに負荷をかけずに実現できるのです。

パターン3: サーバーサイドレンダリング (SSR) - フルスタックなエッジアプリケーション

初期表示速度の向上やSEO対策が重要なアプリケーションでは、サーバーサイドレンダリング(SSR)が不可欠です。Cloudflare Workersは、Reactアプリケーションをエッジサーバー上で直接レンダリングし、完成したHTMLをユーザーに返す本格的なSSR環境の構築を可能にします。
SSRを実現するには、Viteのようなモダンなビルドツールと、HonoやRemixといったフレームワークを組み合わせるのが一般的です。どのツールスタックを選ぶかは、プロジェクトの要件や開発者の好みに大きく依存します。
▼主要なSSRツールスタック比較
ツール / フレームワーク特徴こんな用途に最適参考文献
Hono + Vite軽量で柔軟なWebフレームワーク。Next.jsなどに依存せず、ほぼ「素のReact」に近い感覚でSSRを構築可能。自由度が高く、コンポーネント内での非同期データ取得も柔軟に行える。フレームワークの規約に縛られず、独自の構成で軽量なSSR環境を構築したい場合。
zenn.dev
,
zenn.dev
vite-plugin-ssr汎用的なViteプラグイン。SSRだけでなく静的サイト生成(SSG)もサポート。Next.jsは大規模すぎると感じる小規模アプリやプロトタイプに最適。Next.jsの複雑さを避けつつ、SSR/SSGやファイルベースルーティングなどモダンな機能を使いたい場合。
zenn.dev
,
zenn.dev
Remix + CloudflareCloudflareが公式にサポートするフルスタックフレームワーク。
create-cloudflare
CLIで簡単に環境を構築でき、Cloudflareの各種サービスとの連携もスムーズ。
安定した公式サポートとCloudflareのエコシステムを最大限に活用したい本格的なフルスタックアプリケーション。
kokeshing.com
,
kokeshing.com
▼SSRとキャッシュによるパフォーマンス最適化 SSRの真価は、キャッシュ戦略と組み合わせることでさらに発揮されます。例えば、RemixアプリケーションをCloudflare Pages Functions(実体はWorkers)で動かす場合、Cloudflareの
Cache API
を利用して、一度レンダリングした結果をサーバーサイドでキャッシュできます
kokeshing.com
。
具体的には、Remixの
entry.server.tsx
ファイルをカスタマイズし、リクエストを処理する際にまずキャッシュを確認し、ヒットすれば即座にキャッシュされたレスポンスを返します。キャッシュがない場合のみレンダリングを行い、その結果を次のリクエストのためにキャッシュに保存します
kokeshing.com
。この実装により、レスポンスタイムを劇的に改善することが可能です
kokeshing.com
。
実行可能な洞察: Cloudflare WorkersでReactを実行する環境を選ぶ際は、「静的か、動的か」という二元論で考える必要はありません。まずは最もシンプルな静的サイトホスティングから始め、必要に応じて**
HTMLRewriter
で動的要素を加え、さらなるパフォーマンスや機能性が求められるようになった段階でSSR**へと移行する、という段階的なアプローチが可能です。この柔軟性こそが、Cloudflare WorkersをReact開発のプラットフォームとして非常に魅力的なものにしているのです。

調査のまとめ

Cloudflare Workers上でReactやHTMLのコードを実行する環境を構築するには、静的サイトとしてデプロイする方法から、エッジで動的にHTMLを書き換える方法、さらにはサーバーサイドレ...

🏷まずはここから!ReactやHTMLを静的サイトとして高速配信する基本手順

画像 1

まずはここから!ReactやHTMLを静的サイトとして高速配信する基本手順

Cloudflare WorkersでReactやHTMLのアプリケーションを動かす最初のステップとして、まずは静的サイトとしてコンテンツを配信する方法をマスターしましょう。これは、驚くほど簡単でありながら、Cloudflareのグローバルネットワークがもたらす圧倒的なパフォーマンスとセキュリティを享受できる、非常に強力な手法です。
近年のJAMstackアーキテクチャの普及に伴い、静的サイトのホスティング需要は高まっています
qiita.com
。Cloudflare Workersは、もともとサーバーレスでコードを実行するプラットフォームでしたが、2024年9月に静的アセットのネイティブサポートが導入されたことで、その役割は大きく進化しました
thomasgauvin.com
。これにより、ReactやVueのようなシングルページアプリケーション(SPA)や、シンプルなHTMLサイトのホスティングが劇的に簡素化されたのです。
注目すべきは、Cloudflare自身が、新規プロジェクトにおいては、従来の静的サイトホスティングサービスであるCloudflare Pagesよりも、この新しいWorkersの利用を推奨している点です
zenn.dev
。これは、Workersが持つ高い柔軟性と、レート制限やDurable Objectsといった他のCloudflareサービスとの優れた統合性を評価してのことでしょう
thomasgauvin.com
。
それでは、具体的な手順を見ていきましょう。

開発を始める前の準備

まず、開発環境を整える必要があります。必要なツールは以下の3つです。
  1. Cloudflareアカウント: まだお持ちでない場合は、公式サイトから無料でサインアップできます
    cloudflare.com
    。
  2. Node.js: バージョン16.17.0以降が必要です。バージョン管理ツール(Voltaやnvmなど)の利用が推奨されています
    cloudflare.com
    。
  3. Wrangler CLI: Cloudflare Workersのプロジェクト管理に不可欠なコマンドラインツールです。以下のコマンドでインストールできます
    howtogeek.com
    。
    npm install -g @cloudflare/wrangler
    

【パターン別】ReactやHTMLサイトの構築手順

ホストしたいサイトの種類に応じて、いくつかの簡単な構築パターンがあります。
パターン1: React製SPA(シングルページアプリケーション)をホストする
React Routerなどを用いたモダンなSPAをホストする場合、Cloudflareが提供するテンプレートを使うのが最も手軽で確実な方法です。
  1. テンプレートからプロジェクトを作成 ターミナルで以下のコマンドを実行するだけで、React用のプロジェクトひな形が自動で生成されます
    cloudflare.com
    。
    npm create cloudflare@latest my-react-app -- --framework=react
    
    このコマンドは、ViteとCloudflareのプラグインがセットアップされたReactプロジェクトを作成します。デプロイに必要な設定も含まれているため、開発にすぐに集中できます
    cloudflare.com
    。
  2. 手動で設定する場合(SPAのみ) もし既存のReactプロジェクトがある場合や、APIサーバーなしで純粋なSPAのみをホストしたい場合は、
    wrangler.toml
    (または
    wrangler.jsonc
    )という設定ファイルに数行追記するだけで対応できます。
    まず、Reactプロジェクトをビルドし、静的ファイル(通常は
    dist
    や
    build
    フォルダに生成されます)を用意します。次に、プロジェクトのルートに
    wrangler.toml
    を作成し、以下のように設定します。
    # wrangler.toml
    name = "my-react-spa"
    compatibility_date = "2025-01-01" # プロジェクト作成日に合わせてください
    
    [assets]
    directory = "./build" # Reactアプリのビルド出力ディレクトリを指定
    not_found_handling = "single-page-application"
    
    ここで重要なのが
    not_found_handling = "single-page-application"
    という一行です
    cloudflare.com
    。これを設定することで、
    https://example.com/users/123
    のような存在しないパスへのリクエストがあった場合でも、
    404 Not Found
    を返す代わりに、SPAのエントリーポイントである
    index.html
    を返します。これにより、React Routerなどのクライアントサイドのルーティングが正しく機能するようになります。
パターン2: シンプルなHTML+CSS+JSサイトをホストする
Reactなどのフレームワークを使わない、素のHTML、CSS、JavaScriptで構成されたWebサイトも非常に簡単に公開できます
zenn.dev
。
  1. ファイル構成
    index.html
    、
    style.css
    、
    script.js
    などのファイルを一つのフォルダにまとめます。
  2. 設定ファイルの作成 プロジェクトのルートに
    wrangler.jsonc
    という名前で以下の設定ファイルを作成します。
    directory
    に
    ./
    を指定することで、カレントディレクトリ全体が配信対象のアセットとして扱われます
    zenn.dev
    。
    // wrangler.jsonc
    {
      "name": "my-static-site",
      "compatibility_date": "2025-05-06",
      "assets": {
        "directory": "./"
      }
    }
    
  3. (任意)配信しないファイルを指定
    .gitignore
    と同じように、
    .assetsignore
    ファイルを作成して、配信したくないファイルを指定できます。例えば、設定ファイル自体を配信対象から除外できます
    zenn.dev
    。
    # .assetsignore
    wrangler.jsonc
    /.*
    

ローカルでの確認と世界への公開

サイトの準備ができたら、いよいよデプロイです。その前に、ローカル環境で正しく表示されるか確認しましょう。
  • ローカルプレビュー: ターミナルで
    npx wrangler dev
    を実行すると、ローカルサーバーが起動します。http://localhost:8787 にアクセスしてサイトの動作を確認できます
    cloudflare.com
    。
  • デプロイ: 準備ができたら
    npx wrangler deploy
    コマンドで、サイトをCloudflareのグローバルネットワークに公開します
    cloudflare.com
    。デプロイは瞬時に完了し、世界中のユーザーに最も近いデータセンターからコンテンツが配信されるようになります
    cloudflare.com
    。
さらに、GitHubリポジトリと連携すれば、コードをプッシュするたびに自動でデプロイするCI/CDパイプラインも簡単に構築できます
zenn.dev
,
qiita.com
。
このように、Cloudflare Workersの静的アセット機能を使えば、ほんの数ステップで、ReactアプリやHTMLサイトを世界最高クラスのインフラ上で公開できます。これは、単なる静的ホスティングにとどまりません。この基盤の上に、サーバーサイドレンダリング(SSR)や動的なAPIを追加していくことで、アプリケーションをさらに高度化させていくための、まさに最初の、そして最も重要な一歩となるのです。
copy url
source logozenn.dev
https://developers.cloudflare.com/workers/static-assets/migration-guides/migrate-from-pages/
index.htmlだけあるリポジトリ
copy url
source logoqiita.com
Global Mobility Service Advent Calander 2020
Cloudlare Workers
CDN
Cloudflare Pages
話
Edge
対応
記事
https://workers.cloudflare.com/
github action
Cloudflare Pages
copy url
source logocloudflare.com
copy url
source logocloudflare.com
Cloudflare account ↗
Volta ↗
nvm ↗
Wrangler
C3 ( create-cloudflare-cli) ↗
Wrangler
ES module
See sample Wrangler configuration
Wrangler
create
test
deploy
wrangler dev
http://localhost:8787 ↗
wrangler login
JavaScript modules ↗
fetch() handler
to respond to Worker invocations via a
Cron Trigger
request, env and context
Custom Domain
523 errors
connect to builds
Cloudflare dashboard ↗
Examples
Tutorials
bindings
test and debug
Workers limits and pricing
API
New to Cloudflare?
Products
Sponsorships
Open Source
Help Center
System Status
Compliance
GDPR
cloudflare.com
Our team
Careers
Privacy Policy
Terms of Use
Report Security Issues
Trademark
copy url
source logohowtogeek.com
CloudFlare (CF) Workers
Workers KV (key-value)
Workers Bundled plan
workers.dev
Wrangler command-line tool
NPM (NodeJS package manager)
Cargo (Rust language package manager)
copy url
source logocloudflare.com
Cloudflare Vite plugin
Supported frameworks
Wrangler configuration file
assets binding
assets binding
not_found_handling option under assets
advanced routing control
Routing options
tiered caching system
Vite + React SPA tutorial
Supported frameworks
Billing and limitations
API
New to Cloudflare?
Products
Sponsorships
Open Source
Help Center
System Status
Compliance
GDPR
cloudflare.com
Our team
Careers
Privacy Policy
Terms of Use
Report Security Issues
Trademark
copy url
source logothomasgauvin.com
Cloudflare Workers and Pages
this repository
compatibility matrix
Pages’ Functions
compatibility matrix
This GitHub repository
copy url
source logogithub.com

調査のまとめ

Cloudflare Workersを利用して、ReactやVueのようなシングルページアプリケーション(SPA)や、シンプルなHTMLサイトの実行環境を構築する方法について、調査結果を基に解説します...

🏷高速化とSEOを実現:ViteやHonoを活用したSSR環境構築と動的HTML操作

画像 1

高速化とSEOを実現:ViteやHonoを活用したSSR環境構築と動的HTML操作

Cloudflare WorkersでReactアプリケーションを動かすことは、もはや単に静的なHTMLファイルをホスティングするだけにはとどまりません。最新の開発ツールとWorkersの強力な機能を組み合わせることで、ユーザー体験とSEO効果を最大化するサーバーサイドレンダリング(SSR)環境の構築や、エッジでの動的なHTML操作が可能になります。このセクションでは、特に
Vite
や
Hono
といったモダンなツールスタックを活用した、先進的な環境構築の方法を深掘りしていきます。

ViteとHono:エッジ開発を加速させるモダンなツール

現代のフロントエンド開発において、ビルドツール
Vite
の存在は欠かせません。その高速な開発サーバーと効率的なビルドプロセスは多くの開発者に支持されています。Cloudflareもこの流れを汲み、公式にCloudflare Viteプラグインをリリースしました
issoh.co.jp
。このプラグインの最大の魅力は、開発サーバー内でCloudflare Workersのランタイムである
workerd
を直接実行できる点にあります。これにより、開発環境と本番環境の挙動の差異が最小限に抑えられ、「ローカルでは動いたのにデプロイしたら動かない」といった問題を未然に防ぐことができます
issoh.co.jp
。
一方、
Hono
はCloudflare Workersのようなエッジ環境に最適化された、超高速で軽量なWebフレームワークです
pixiv.blog
。Next.jsやRemixのような多機能なフレームワークも強力ですが、よりシンプルで柔軟な構成を求める場合、Honoは最高の選択肢となります。実際に、HonoとViteを組み合わせることで、フレームワークの規約に縛られずに「ほぼ素のReact」でSSR環境を構築するアプローチが注目されています
zenn.dev
。
この組み合わせの具体例として、
@hono/vite-dev-server
というViteプラグインを利用した開発が挙げられます
zenn.dev
。このプラグインは開発サーバーをHonoアプリケーションに接続し、シームレスな開発体験を提供します。
ツール役割と特徴
Vite高速な開発サーバーとビルドツール。Cloudflare公式プラグインにより、Workersランタイムとの高い親和性を実現
issoh.co.jp
。
Honoエッジ環境向けに設計された軽量・高速なWebフレームワーク。ReactのSSRやAPIエンドポイントの作成に利用
pixiv.blog
。
vite-plugin-ssrSSR、SSG、SPAなど多様なレンダリング方式をサポートするViteプラグイン。小規模アプリやミニマムな構成を求める場合に有力な選択肢
cloudflare.com
。
ある開発者は、中〜大規模アプリケーションにはNext.jsが適しているとしつつも、小規模なプロジェクトやプロトタイピングにおいては、
vite-plugin-ssr
のようなミニマムなツールがRemixに代わる第一候補になり得ると考察しています
cloudflare.com
。これは、プロジェクトの規模や要件に応じて適切なツールを選択することの重要性を示唆しています。

SSR環境の構築:選択肢と実装パターン

Cloudflare Workers上でSSRを実現するには、いくつかの優れた選択肢が存在します。
  1. React Router (旧Remix) を活用する公式推奨ルート Cloudflareは、React Router v7(旧Remix)をフルスタックフレームワークとして公式にサポートしています
    pixiv.blog
    。
    create-cloudflare
    CLIを使えば、SSRが有効化されたReact Routerプロジェクトをわずか数コマンドで構築できます。
    npm create cloudflare@latest my-react-router-app -- --framework=react-router
    
    このコマンドで生成されるプロジェクトでは、
    react-router.config.ts
    ファイルに
    ssr: true
    が設定され、ViteとCloudflareプラグインが連携してSSRを実現します
    pixiv.blog
    。これは、最も手軽で安定したSSR環境構築の方法と言えるでしょう。
  2. Hono + Viteで構築する軽量カスタムルート より柔軟性を求めるなら、HonoとViteを基盤にSSR環境を自前で構築するアプローチが有効です
    zenn.dev
    。この方法の核心は、サーバーサイドのエントリーポイント(例:
    src/server.ts
    )でReactの
    renderToReadableStream
    関数を使用することです
    zenn.dev
    。この関数はReactコンポーネントをストリーミング可能な形式に変換し、コンポーネント内での非同期データ取得が完了するのを待ってからレンダリングを再開する機能を持っています。
    この機能を利用してSSRを実現しています。
    zenn.dev
    クライアントサイドでは、サーバーから送られてきたHTMLにReactコンポーネントを「ハイドレート」することで、インタラクティブなアプリケーションとして機能させます
    zenn.dev
    。このアプローチは、フレームワークの裏側で何が起きているかを理解し、細部まで制御したい開発者に最適です。
  3. React Edge:Cloudflare特化の次世代フレームワーク さらに進んだ選択肢として、Next.jsの複雑さやVercelの料金体系に課題を感じた開発者によって生み出された「React Edge」というフレームワークがあります
    codegrid.net
    。これはCloudflare Workersの能力を最大限に引き出すために設計されており、以下のような革新的な機能を備えています。
    • 型安全なRPC: サーバーサイドの関数をクライアントから直接、型安全に呼び出せる。
    • 統一されたデータフェッチ (
      app.useFetch
      )
      : SSR時のデータプリロードとクライアントでの自動ハイドレーションをシームレスに実現。
    • 自動多重化: 複数のコンポーネントからの同一APIコールを単一のリクエストにまとめる。
    すでにブラジルの大手不動産会社で本番採用されるなど
    codegrid.net
    、その実用性は証明されており、Cloudflare上で高性能なアプリケーションを構築するための強力な選択肢となり得ます。

HTMLRewriter:エッジでHTMLを動的に書き換える魔法

SSRが初回ページの生成に焦点を当てているのに対し、HTMLRewriterは既存のHTMLをエッジで動的に書き換えるための強力なAPIです
reffect.co.jp
。これは、Cloudflare Workersの最もユニークで革新的な機能の一つと言えるでしょう。
HTMLRewriterは、jQueryライクなCSSセレクタを使ってHTMLの特定の部分をターゲットにし、その内容を追加、変更、削除することができます
cloudflare.com
。
// 特定の要素(#client-quote)にランダムなコンテンツを挿入する例
class quoteHandler {
  async element(element) {
    const item = quotes[Math.floor(Math.random() * quotes.length)];
    // setInnerContentでHTMLを動的に設定
    element.setInnerContent(`<blockquote>${item.quote}</blockquote><figcaption>${item.client}</figcaption>`, {
      html: true,
    });
  }
}

async function handleRequest(req) {
  const res = await fetch(req); // オリジンからレスポンスを取得
  const rewritter = new HTMLRewriter().on('#client-quote', new quoteHandler());
  return rewritter.transform(res); // レスポンスを書き換えて返す
}
このコードは、静的なウェブサイトの特定箇所に、ページをリクエストするたびに異なる顧客の声を動的に挿入する実装例です
cloudflare.com
。注目すべきは、この処理がすべてエッジ(ユーザーに最も近いCloudflareのサーバー)で行われ、クライアントサイドのJavaScriptを一切必要としない点です。
この技術の利点は計り知れません。
  • パフォーマンス向上: クライアントの処理負荷を軽減し、レンダリングブロックや表示の「ちらつき」を防ぎます
    reffect.co.jp
    。
  • キャッシュ効率の最大化: 商品一覧のような「ほぼ静的」なページの大部分をキャッシュしつつ、ショッピングカートの表示のようなユーザー固有の部分だけをエッジで動的に挿入できます
    reffect.co.jp
    。
  • A/Bテストとパーソナライゼーション: ユーザーの属性(Cookieや地域など)に応じて、エッジでHTMLを書き換え、パーソナライズされたコンテンツを提供できます。
SSRとHTMLRewriterは競合する技術ではなく、むしろ相補的な関係にあります。SSRで生成されたHTMLに対して、さらにHTMLRewriterでパーソナライズや動的な変更を加える、といったハイブリッドなアプローチも可能です。これにより、高速な初期表示、優れたSEO、そしてリッチで動的なユーザー体験という、現代のWebアプリケーションに求められる要件を高いレベルで満たすことができるのです。
copy url
source logozenn.dev
https://hono-ssr-react.mofon001.workers.dev/
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react/package.json
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react/vite.config.ts
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react/wrangler.toml
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react/src/server.tsx
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react/src/client.tsx
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react/src/App.tsx
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react/src/page/index.tsx
https://hono-ssr-react-routing.mofon001.workers.dev/
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react-miniflare/vitePlugin/index.ts
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react-miniflare/vitePlugin/miniflare.ts
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react-miniflare/vitePlugin/miniflare_module.ts
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react-miniflare/vitePlugin/unsafeModuleFallbackService.ts
https://github.com/SoraKumo001/hono-ssr-react/blob/master/packages/hono-ssr-react-miniflare/vitePlugin/utils.ts
https://hono-ssr-react-routing.mofon001.workers.dev/
GitHubで編集を提案
copy url
source logocloudflare.com
React Router v7 ↗
Cloudflare Vite plugin
React Router v7 ↗
Cloudflare Vite plugin
React Router config file ↗
Cloudflare Vite plugin
Vite config file ↗
Cloudflare Vite plugin
Worker config file
bindings
Cloudflare Vite plugin
Custom Domain
Workers Builds
"deploy command"
Durable Objects
Workflows
Bindings
API
New to Cloudflare?
Products
Sponsorships
Open Source
Help Center
System Status
Compliance
GDPR
cloudflare.com
Our team
Careers
Privacy Policy
Terms of Use
Report Security Issues
Trademark
copy url
source logomedium.com
Vercel
Next.js
Next.js
Cloudflare
Workers
R2
KV
DDoS protection
global CDN
firewall
page rules and routing
Cloudflare
React Edge
React Edge
Cloudflare Workers
React Edge
React Edge
Hono
Cloudflare R2
Cloudflare Workers
Queues
Durable Objects
KV Storage
Vite
React Edge
React Edge
React Edge
React Edge
React Edge
React Edge
React Edge
React Edge
React Edge
Hono
React Edge
react.dev documentation
React Edge
React Edge
React Edge
Cloudflare Workers
Cloudflare R2
React Edge
Lopes Imóveis
Cloudflare R2
Easy Auth
React Edge
React Edge
Cloudflare
React Edge on NPM.
copy url
source logovite-plugin-ssr.com
copy url
source logocloudflare.com
copy url
source logozenn.dev
aiji42
vite-plugin-ssr
aiji42
aiji42
aiji42
example
aiji42
https://vite-plugin-ssr.com/tailwind-css#page-content
copy url
source logowww.reddit.com
copy url
source logogithub.com
Miniflare
copy url
source logogithub.com
vite-ssr-components
Migration Guide
https://github.com/yusukebe/hono-vite-react-stack-example
vite-ssr-components
vite-ssr-components documentation
https://github.com/yusukebe
copy url
source logogithub.com
Notifications
Fork 937
bugSomething that isn't working
vite-pluginRelating to the `@cloudflare/vite-plugin` package
https://github.com/hi-ogawa/reproductions/tree/main/wrangler-vite-plugin-optimizeDeps-exclude
https://github.com/hi-ogawa/reproductions/tree/main/wrangler-vite-plugin-optimizeDeps-exclude
https://github.com/hi-ogawa/vite-plugins/tree/main/packages/rsc/examples/react-router
https://github.com/hi-ogawa/vite-plugins/blob/c3c21d7bc214786494c4a57edef2f4e760b7d223/packages/rsc/examples/react-router/cf/vite.config.ts#L25-L40
bugSomething that isn't working
vite-pluginRelating to the `@cloudflare/vite-plugin` package
copy url
source logogithub.com
Notifications
Fork 2.7k
https://my-remix-app-ab9.pages.dev/
copy url
source logofershad.com
Section titled A brief background
Eleventy
Section titled Handling dynamic content
Fathom
instant.page
Section titled Including content in HTML on-the-fly
homepage
services page
copy url
source logocloudflare.com
namespace URI ↗
doctype ↗
API
New to Cloudflare?
Products
Sponsorships
Open Source
Help Center
System Status
Compliance
GDPR
cloudflare.com
Our team
Careers
Privacy Policy
Terms of Use
Report Security Issues
Trademark
copy url
source logocloudflare.com
Get Started Free
Contact Sales
The Cloudflare Blog
AI
Developers
Radar
Product News
Security
Policy & Legal
Zero Trust
Speed & Reliability
Life at Cloudflare
Partners
AI
Developers
Radar
Product News
Security
Policy & Legal
Zero Trust
Speed & Reliability
Life at Cloudflare
Partners
Rita Kozlov
documentation
tutorial
part 1
introduced the Cache API
cache POST requests
Workers Sites
CDN
Black Friday, and Cyber Monday
JAMstack
HTMLRewriter API in beta
Workers KV
Happy Cog
signing up
documentation
first part
entire corporate networks
Internet-scale applications efficiently
website or Internet application
wards off DDoS attacks
hackers at bay
your journey to Zero Trust
1.1.1.1
start here
our open positions
Discuss on Hacker News
Cloudflare Workers
Workers Sites
Serverless
JAMstack
JavaScript
Product News
Developers
Developer Platform
@ritakozlov_
@cloudflare
Explore your Cloudflare data with Python notebooks, powered by marimo
Carlos Rodrigues
Jorge Pacheco
Keith Adler
Akshay Agrawal (Guest Author)
Myles Scolnick (Guest Author)
Developer Platform,
API,
R2,
Data Catalog,
Notebooks
Celebrate Micro-Small, and Medium-sized Enterprises Day with Cloudflare
Jocelyn Woolbright
Smrithi Ramesh
Patrick Day
Security,
Developers,
Free,
Impact
Building agents with OpenAI and Cloudflare’s Agents SDK
Kate Reznykova
Sunil Pai
AI,
Agents,
Cloudflare Workers,
Developers
Containers are available in public beta for simple, global, and programmable compute
Gabi Villalonga Simón
Ivan Chernetsky
Josh Seba
Nafeez Nazer
Thomas Lefebvre
Cloudflare Workers,
Containers,
Developers,
AI
Free plans
For enterprises
Compare plans
Get a recommendation
Request a demo
Contact Sales
Learning Center
Analyst reports
Cloudflare Radar
Cloudflare TV
Case Studies
Webinars
White Papers
Developer docs
theNet
Connectivity cloud
SSE and SASE services
Application services
Network services
Developer services
Community Hub
Project Galileo
Athenian Project
Cloudflare for Campaigns
Critical Infrastructure Defense Project
Connect 2024
Help center
Cloudflare Status
Compliance
GDPR
Trust & Safety
About Cloudflare
Our team
Investor relations
Press
Careers
Diversity, equity & inclusion
Impact/ESG
Network Map
Logos & press kit
Become a partner
Privacy Policy
Terms of Use
Report Security Issues
Trademark

🏷開発効率と性能を最大化する実践テクニック:デバッグ、CI/CD、最適化

画像 1

はい、承知いたしました。 Cloudflare WorkersでReactやHTMLのコードを実行できる環境を構築した後の、開発効率と性能を最大化するための実践的なテクニックについて、調査結果を基にレポートを作成します。

#### 開発効率と性能を最大化する実践テクニック:デバッグ、CI/CD、最適化

Cloudflare WorkersでReactやHTMLアプリケーションの環境を構築した先には、より洗練された開発ワークフローとパフォーマンスの追求が待っています。単にコードを動かすだけでなく、開発の生産性を高め、ユーザーに最高の体験を届けるためには、デバッグ、CI/CD、そしてパフォーマンス最適化という3つの柱が不可欠です。ここでは、これらの要素を最大限に活用するための実践的なテクニックを、具体的なツールやコード例を交えて深く掘り下げていきます。

ローカル開発とデバッグ:手元で問題を迅速に解決する

クラウド環境での開発は、デバッグの難しさが生産性のボトルネックになりがちです。しかしCloudflare Workersは、ローカル環境で快適に開発・デバッグを行うための強力なツールを提供しています。
  • ローカルサーバーでの実行とテスト:
    wrangler dev
    コマンドは、ローカルマシン上でWorkerを起動し、本番に近い環境で動作をテストすることを可能にします
    cloudflare.com
    cloudflare.com
    。これにより、デプロイを待たずにコードの変更を即座に確認でき、開発サイクルが劇的に高速化します。
  • ブラウザDevToolsとのシームレスな連携: 注目すべきは、
    wrangler dev
    の実行中にターミナルで
    D
    キーを押すだけで、Chrome DevToolsが起動する機能です
    cloudflare.com
    cloudflare.com
    。これにより、お馴染みのコンソールで
    console.log
    の出力を確認したり、パフォーマンスプロファイリングを行ったりできます。Viteプラグインを使用している場合でも、
    vite dev
    実行後に
    /__debug
    という特別なパスにアクセスすることで、同様にDevToolsを活用できます
    cloudflare.com
    cloudflare.com
    。
  • VS Codeでのブレークポイントデバッグ: より高度なデバッグには、VS Codeのようなエディタでのブレークポイント設定が有効です。
    .vscode/launch.json
    ファイルに特定の設定を追加することで、ローカル開発サーバーにデバッガをアタッチし、コードの実行を一行ずつ追いながら変数の状態を確認できます
    cloudflare.com
    cloudflare.com
    cloudflare.com
    。
    // .vscode/launch.json の設定例
    {
      "configurations": [
        {
          "name": "<WORKER名>",
          "type": "node",
          "request": "attach",
          "websocketAddress": "ws://localhost:9229/<WORKER名>",
          "sourceMaps": true
        }
      ]
    }
    
    この設定により、複雑なロジックや予期せぬ挙動の原因究明が格段に容易になります。
これらのデバッグ機能を使いこなすことは、クラウドネイティブなアプリケーション開発における課題を克服し、ローカルでの開発体験を飛躍的に向上させる鍵と言えるでしょう。

CI/CDによるデプロイ自動化:信頼性と一貫性を高める

開発が進むと、手動でのデプロイ作業はミスを誘発し、時間もかかります。CI/CD(継続的インテグレーション/継続的デプロイ)パイプラインを導入することは、もはやベストプラクティスです
cloudflare.com
。特にGitHub Actionsとの連携は非常に強力です。
  • Wrangler GitHub Actionの活用: Cloudflareが公式に提供する
    cloudflare/wrangler-action
    を利用すれば、GitHubリポジトリの特定ブランチ(例:
    main
    )へのプッシュをトリガーに、ビルドからデプロイまでを完全に自動化できます
    github.com
    cloudflare.com
    。
  • 安全な認証情報管理: CI/CD環境では、
    wrangler login
    のような対話的な認証は使えません。代わりに、CloudflareのAPIトークンとアカウントIDを、GitHubリポジトリのSecrets機能を使って
    CLOUDFLARE_API_TOKEN
    、
    CLOUDFLARE_ACCOUNT_ID
    として安全に設定します
    cloudflare.com
    accelia.net
    。これにより、認証情報がコードリポジトリに漏洩するリスクを防ぎます。
  • wrangler.toml
    の取り扱い
    :
    wrangler.toml
    ファイルには、D1データベースのIDなど、公開すべきでない機密情報が含まれることがあります
    zenn.dev
    。このような場合、
    wrangler.toml
    を
    .gitignore
    に追加し、リポジトリに含めない運用が推奨されます。しかし、そうするとCI/CD環境でファイルが見つからずデプロイに失敗します
    accelia.net
    。 この問題に対するエレガントな解決策は、
    wrangler.toml
    の内容全体をGitHub Secretsに保存し、ワークフロー実行時に動的にファイルを生成する手法です
    zenn.dev
    zenn.dev
    。
    # GitHub Actionsワークフローでのwrangler.toml生成例
    name: Deploy
    on:
      push:
        branches:
          - main
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: Setup Wrangler.toml
            run: printf "%s" '${{ secrets.WRANGLER_TOML }}' > wrangler.toml # Secretsからファイルを生成
          - name: Deploy
            uses: cloudflare/wrangler-action@v3
            with:
              apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
              accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
    
    このアプローチは、セキュリティと自動化を両立させるための非常に実践的なテクニックです。

パフォーマンス最適化:ユーザー体験を極限まで高める

アプリケーションの応答速度は、ユーザー満足度に直結します。Cloudflare Workersの真価は、そのパフォーマンスを最大限に引き出す最適化手法にあります。
キャッシュ戦略:動的コンテンツを静的に近づける
SSR(サーバーサイドレンダリング)などで動的に生成されるHTMLも、賢くキャッシュすることで劇的に高速化できます
speakerdeck.com
。Cloudflareでは主に2つのキャッシュストレージを選択できます。
キャッシュ方法特徴推奨ユースケース
Cache APIWorkerが実行されたデータセンターにのみキャッシュを保存。グローバルな同期はないため、他のデータセンターではキャッシュミスになる可能性がある
zenn.dev
。
高速なレスポンスが最優先で、グローバルでの一貫性が厳密には不要な場合。RemixのSSRキャッシュ実装例も存在します
kokeshing.com
。
Workers KVグローバルに分散されたKVS。書き込みには若干の遅延があるが、一度書き込まれれば世界中のどのデータセンターからでも高速に読み取り可能
cloudflare.com
。
高いキャッシュヒット率が求められる場合や、Next.jsのISRのように状態をグローバルに共有したい場合。Cloudflareもこの方法を推奨しています
cloudflare.com
。
さらに、
stale-while-revalidate
(SWR)
という高度なキャッシュ戦略をWorkerで実装することも可能です
cloudflare.com
。これは、まず古いキャッシュデータをユーザーに即座に返し、その裏で新しいコンテンツを非同期に取得・更新する手法です。ユーザーの体感速度を大幅に向上させることができますが、KVストアの結果整合性により、タイミングによっては古いデータが新しいデータを上書きしてしまう競合状態の可能性も指摘されており、トレードオフの理解が必要です
github.com
。
バンドルサイズの最適化:制限の回避とロード時間の短縮
Cloudflare Pagesには単一ファイルのサイズに25MiBの上限があるなど、プラットフォームには制約が存在します
developersteve.com
cloudflare.com
。バンドルサイズを小さく保つことは、これらの制限をクリアし、ロード時間を短縮する上で極めて重要です。
  • ツリーシェイキング (Tree Shaking): これは、ビルド時に実際には使われていないコード(Dead Code)を最終的なバンドルから削除する技術です。Sentry SDKのような多くのモダンなライブラリは、ES6モジュール形式でインポートすることでツリーシェイキングが最大限に機能するように設計されています
    sentry.io
    arcxp.com
    。不要な依存関係を減らす最も基本的ながら効果的な最適化です。
  • ビルドプロセスの分離: 大規模なNext.jsアプリケーションなどでファイルサイズ制限が問題になる場合、非常に有効な解決策があります。それは、ビルドプロセスをGitHub Actions上で行い、生成された静的なアウトプット(例:
    out
    ディレクトリ)のみをWranglerを使ってCloudflare Pagesにデプロイする
    方法です
    developersteve.com
    。これにより、ビルド時に生成される中間ファイルや巨大な
    node_modules
    がデプロイ対象から外れ、サイズ制限を回避できます。
これらのテクニックを駆使することで、Cloudflare Workersという強力なプラットフォームの上で、開発効率とアプリケーション性能の両方を最大化する、プロフェッショナルな開発ワークフローを確立できるのです。
copy url
source logocloudflare.com
GitHub Actions ↗
wrangler login
Cloudflare API token
account ID
Find account and zone IDs
Cloudflare dashboard ↗
Cloudflare account ID
Cloudflare API token you generated
GitHub Actions ↗
an official action ↗
API
New to Cloudflare?
Products
Sponsorships
Open Source
Help Center
System Status
Compliance
GDPR
cloudflare.com
Our team
Careers
Privacy Policy
Terms of Use
Report Security Issues
Trademark
copy url
source logogithub.com
cloudflare
About badges in GitHub Marketplace
Wrangler
Refer to Changelog for more information
Workers documentation
SemVer
Worker secrets
GitHub Actions documentation
crontab.guru
event
the GitHub documentation
Quick Start guide
copy url
source logogithub.com
worker.js
Cloudflare Worker
.github/workflows/deploy.yml
the code is currently using Node's crypto package
universal-github-app-jwt
#1
Create a Cloudflare account
select your account
Create a new token
@cameronmcefee
cloud
copy url
source logocloudflare.com
Workers Builds
external providers
Workers Builds
external CI/CD providers
Git integration
Workers Builds
Workers Builds
API
New to Cloudflare?
Products
Sponsorships
Open Source
Help Center
System Status
Compliance
GDPR
cloudflare.com
Our team
Careers
Privacy Policy
Terms of Use
Report Security Issues
Trademark
copy url
source logoaccelia.net
https://developers.cloudflare.com/workers/wrangler/ci-cd/
https://github.com/cloudflare/wrangler-action
Solution CDN
お問い合わせ
copy url
source logozenn.dev
株式会社スーパーハムスター
お茶
copy url
source logozenn.dev
https://zenn.dev/aiji42/articles/988ad0ab2446f3
サンプル
こちら
こちら
ドキュメント
Tiered Cache
CloucdflareのTiered Cache(階層型キャッシュ)を有効にしてキャッシュヒット率を高めてみた
↩︎
copy url
source logokokeshing.com
Cloudflare Pages
Cloudflare Pages Functions
Service bindings
entry.server.tsx
Workers KV
Purge everything
copy url
source logospeakerdeck.com
copy url
source logocloudflare.com
@cloudflare/next-on-pages ↗
caching ↗
revalidating ↗
.
Next.js documentation ↗
The cache persists across deployments ↗
Workers KV
Cache API
Workers KV
add a KV binding
Cache API ↗
API
New to Cloudflare?
Products
Sponsorships
Open Source
Help Center
System Status
Compliance
GDPR
cloudflare.com
Our team
Careers
Privacy Policy
Terms of Use
Report Security Issues
Trademark
copy url
source logogithub.com
Learn more about bidirectional Unicode characters
Learn more about bidirectional Unicode characters
…
https://gist.github.com/a4568d776ee6de188999afe6e2d2ee69#gistcomment-3672769
https://github.com/notifications/unsubscribe-auth/AAHZFB6VYKY7AV2DT5MYWCLTERQA5ANCNFSM4ZQHHR7Q
…
https://gist.github.com/a4568d776ee6de188999afe6e2d2ee69#gistcomment-3820806
https://github.com/notifications/unsubscribe-auth/AAHZFB6DTZQPJOMZ2GEELPTTYWRBDANCNFSM4ZQHHR7Q
@wilsonpage
https://gist.github.com/wilsonpage/a4568d776ee6de188999afe6e2d2ee69#file-swr-ts-L32
eventually consistent
@Schachte
@wilsonpage
@Schachte
@wilsonpage
@josephglanville
@wilsonpage
copy url
source logocloudflare.com
copy url
source logocloudflare.com
plugin config
Cloudflare's implementation ↗
Chrome's DevTools ↗
VS Code ↗
API
New to Cloudflare?
Products
Sponsorships
Open Source
Help Center
System Status
Compliance
GDPR
cloudflare.com
Our team
Careers
Privacy Policy
Terms of Use
Report Security Issues
Trademark
copy url
source logocloudflare.com
copy url
source logocloudflare.com
copy url
source logodevelopersteve.com
Sitemap
Open in app
Sign up
Sign in
Medium Logo
Write
Sign up
Sign in
DeveloperSteve
size of 25 megabytes
Cicd
Github
Cloudflare
Automation
Nextjs
Written by DeveloperSteve
1.5K followers
909 following
Help
Status
About
Careers
Blog
Privacy
Rules
Terms
Text to speech

調査のまとめ

Cloudflare WorkersでReactやHTMLのコードを実行する環境を構築した後の、より実践的で高度な開発ワークフローやパフォーマンス最適化手法について、調査結果を基に解説します。ローカル...

🖍 考察

調査の本質:単なる技術手順を超えた、最適なアーキテクチャ選定への道標

ユーザーの皆様からの「Cloudflare WorkersでReactやHTMLのコードを実行できる環境を作る方法」というご依頼は、単に技術的な手順を求めるものではありません。その根底には、「現代のウェブ開発において、高速でスケーラブル、かつコスト効率の良いアプリケーションを構築するための最適なプラットフォームは何か?」という、より本質的で戦略的な問いが存在します。
したがって、私たちが提供すべき価値は、手順の羅列にとどまらず、プロジェクトの性質や将来の成長を見据え、なぜCloudflare Workersが有力な選択肢となり得るのか、そしてどのような状況で、どのアーキテクチャ(静的サイト、動的HTML、SSR)を選択すべきかという明確な意思決定の指針を示すことです。
本考察の目的は、調査結果を深く分析し、技術的な選択がビジネスやプロジェクトの成功にどう結びつくのかを解き明かし、皆様が自信を持って次のステップに進むための具体的な洞察とアクションプランを提供することにあります。

分析と発見事項:エッジコンピューティングへのパラダイムシフト

調査結果を多角的に分析すると、いくつかの重要な発見と、ウェブ開発における大きなトレンドが見えてきます。

発見事項1:静的ホスティングからプログラマブルなエッジへの主役交代

最も注目すべきは、Cloudflare自身が新規プロジェクトにおいて、従来の静的ホスティングサービス
Cloudflare Pages
よりも、サーバーレス環境である
Cloudflare Workers
の利用を推奨しているという事実です
zenn.dev
。これは、ウェブホスティングのパラダイムが、単にファイルを配置する「静的」なモデルから、エッジサーバーでコードを実行する「動的・プログラマブル」なモデルへと移行していることを明確に示しています。Workersは静的アセットのホスティング機能を内包しつつ、APIの構築や動的な処理など、はるかに高い柔軟性と拡張性を提供します。

発見事項2:3つの実行パターンが示す「スケーラブルな進化の道筋」

Cloudflare WorkersでのReact/HTML実行方法は、大きく3つのパターンに分類できます。これらは単なる選択肢ではなく、プロジェクトの成長に合わせて進化できる、一連の道筋として捉えることができます。
実行パターン特徴最適なユースケース
1. 静的サイトホスティング最もシンプルで高速。ビルド済みのHTML/CSS/JSを配信。ブログ、ポートフォリオ、コーポレートサイト、ドキュメント
2.
HTMLRewriter
による動的挿入
静的サイトの速度を維持しつつ、エッジでHTMLを部分的に書き換え。ユーザー認証による表示切り替え、A/Bテスト、地域別コンテンツ
3. サーバーサイドレンダリング (SSR)エッジでReactをレンダリングし、SEOと初期表示速度を最大化。Eコマースサイト、メディアサイト、複雑なWebアプリケーション
この段階的なアプローチは、初期段階ではシンプルかつ低コストで始め、ビジネスの成長や機能要件の高度化に伴って、シームレスにより高度なアーキテクチャへ移行できることを意味します。

発見事項3:開発者体験(DX)を重視したエコシステムの成熟

調査結果からは、Cloudflareが本番運用だけでなく、開発プロセス全体の効率化を重視していることが伺えます。
  • ローカルデバッグ:
    wrangler dev
    とブラウザのDevToolsを連携させ、ブレークポイントデバッグまで可能な環境が提供されています
    cloudflare.com
    cloudflare.com
    。
  • CI/CDの自動化: GitHub Actionsとの公式連携により、安全かつ自動化されたデプロイパイプラインの構築が容易になっています
    cloudflare.com
    。
  • モダンツールとの連携: Vite
    issoh.co.jp
    やHono
    pixiv.blog
    、Remix
    pixiv.blog
    といった現代の開発者に人気のツールとの親和性が高く、スムーズな開発体験を実現しています。
これらの発見は、Cloudflare Workersがもはや実験的なプラットフォームではなく、本格的なアプリケーション開発のための成熟したエコシステムを形成していることを示しています。

より深い分析と解釈:「なぜ」を掘り下げて本質を探る

表面的な事実の背後にある「なぜ」を掘り下げることで、より本質的な意味を解き明かします。

なぜCloudflareは静的サイトにまで「Workers」を推奨するのか?

これは、Cloudflareが開発者を自社のエコシステムに深く取り込むための戦略と解釈できます。
  1. 初期接点の獲得: まずは最も手軽な静的サイトホスティングで開発者を呼び込みます。
  2. シームレスな拡張: プロジェクトが成長し、動的な機能(例: データベース接続、認証)が必要になった際、開発者はプラットフォームを乗り換える必要がありません。Workersを基盤として、KV(KVS)、D1(SQLデータベース)、Durable Objects(ステートフル)といったCloudflareの他のサービスを簡単に追加できます。
  3. 将来性の提示: 「今は静的サイトでも、将来的にはフルスタックアプリにまで成長できる」という安心感と拡張性を提供することで、VercelやNetlifyといった競合に対する強力な差別化要因としています。
つまり、
Workers
の推奨は、単なる技術的な優位性だけでなく、開発者のライフサイクル全体をサポートするというビジネス戦略の現れなのです。

なぜ「HTMLRewriter」はゲームチェンジャーとなり得るのか?

HTMLRewriter
の価値は、静的サイトと動的サイトの「良いとこ取り」を実現する点にあります。
  1. パフォーマンスの維持: 従来の動的サイトは、サーバーでの処理待ちがボトルネックになりがちでした。
    HTMLRewriter
    は、キャッシュされた静的HTMLをベースに、ユーザーに最も近いエッジで瞬時に変更を加えるため、体感速度をほとんど損ないません。
  2. Core Web Vitalsへの貢献: クライアントサイドJavaScriptでDOMを操作する場合に発生しがちな「表示のちらつき(レイアウトシフト)」を防ぎ、Googleが重視するユーザー体験指標上有利になります。
  3. アーキテクチャの簡素化: A/Bテストやパーソナライゼーションのために、複雑なバックエンドロジックやクライアントサイドの状態管理を構築する必要がなくなります。これにより、開発と運用のコストを大幅に削減できる可能性があります。
HTMLRewriter
は、これまでトレードオフの関係にあった「速度」と「動的機能」を両立させる、エッジコンピューティングならではの革新的なソリューションと言えます。

戦略的示唆:プロジェクトを成功に導くための実践的アクションプラン

これらの分析と解釈から、皆様が取るべき具体的なアクションを提案します。

提案1:プロジェクト要件に基づくアーキテクチャ選定フレームワーク

技術選定で迷わないために、以下のフレームワークでプロジェクトの要件を整理し、最適な実行パターンを選択してください。

提案2:段階的進化(Progressive Enhancement)戦略の採用

「最初から完璧なSSR環境を構築しなければ」と考える必要はありません。以下の段階的アプローチを推奨します。
  1. Phase 1: Start Simple (MVP)
    • まずは静的サイトホスティングで迅速にサービスを立ち上げます。
      create-cloudflare
      コマンドを使えば数分で完了します
      cloudflare.com
      。同時に、GitHub ActionsによるCI/CDパイプラインを構築し、開発の基盤を固めます
      cloudflare.com
      。
  2. Phase 2: Add Dynamics (機能拡張)
    • ユーザー認証やA/Bテストといった動的機能が必要になったら、**
      HTMLRewriter
      **を導入します。既存の静的サイトの構成を大きく変えることなく、低リスクで機能を追加できます。
  3. Phase 3: Go Full-Stack (スケールアップ)
    • ビジネスが拡大し、より高度なインタラクティビティやSEO対策が求められるようになった時点で、SSRへの移行を検討します。この段階では、Remix
      pixiv.blog
      やHono
      zenn.dev
      といったフレームワークの導入が視野に入ります。キャッシュ戦略(Cache APIやKV
      cloudflare.com
      )を組み合わせることで、パフォーマンスを最大化します。
この戦略により、初期投資を抑えつつ、将来のスケールアップにも柔軟に対応できる技術的負債の少ない開発が可能になります。

今後の調査:継続的な改善と未来への展望

今回の分析を一過性のものとせず、継続的な改善につなげるために、以下のテーマについて追加調査を行うことを推奨します。
  • 実践的なパフォーマンスベンチマーク:
    • 静的サイト、
      HTMLRewriter
      利用時、SSR利用時のTTFB(Time to First Byte)およびLCP(Largest Contentful Paint)を実測し、定量的に比較評価する。
    • Cache APIとWorkers KVをキャッシュバックエンドとして使用した場合の、レスポンスタイムとグローバルな伝播速度の違いを検証する。
  • コスト対効果の分析:
    • 各アーキテクチャ(静的、SSRなど)における、トラフィック量に応じたCloudflareの利用料金をシミュレーションし、TCO(総所有コスト)を比較する。
  • 競合プラットフォームとの比較分析:
    • Vercel、Netlify、AWS Amplifyといった主要な競合サービスと、Cloudflare Workersを「開発者体験」「パフォーマンス」「料金体系」「エコシステムの拡張性」の4つの軸で詳細に比較する。
  • セキュリティアーキテクチャの検討:
    • SSRや
      HTMLRewriter
      を導入する際に考慮すべき具体的なセキュリティ脅威(例:XSS、CSRF、機密情報の漏洩)と、Cloudflareの機能を活用した緩和策を調査・整理する。

このレポートが参考になりましたか?

あなたの仕事の調査業務をワンボタンでレポートにできます。

無料でリサーチ

📖 レポートに利用された参考文献

検索結果: 38件追加のソース: 0件チャット: 3件

259件の参考文献から41件の情報を精査し、約205,000語の情報を整理しました。あなたは約18時間の調査時間を削減したことになります🎉

調査された文献
259件
精査された情報
41件
整理された情報量
約205,000語
削減された時間
約18時間

🏷 静的から動的、SSRまで:Cloudflare Workersでの実行パターン3選

調査のまとめ
Cloudflare Workers上でReactやHTMLのコードを実行する環境を構築するには、静的サイトとしてデプロイする方法から、エッジで動的にHTMLを書き換える方法、さらにはサーバーサイドレ...

🏷 まずはここから!ReactやHTMLを静的サイトとして高速配信する基本手順

Cloudflare Workers | サーバーレスアプリケーションを構築
React Router、OpenNext、またはViteプラグインで静的ファイルをネイティブにサポートするHTML、CSS、クライアントサイドJSをアップロードし配信します。 詳細を見る.
cloudflare.comcloudflare.com
Cloudflare Workersで静的コンテンツのhostingを試す - Qiita
CFWのCLIツールであるWranglerを使って、作成した静的サイトをKV(storage)に直接アップロードすることができます。リクエストがWorker Siteにヒットすると ...
qiita.comqiita.com
GitHub × Cloudflare WorkersでHTML+CSS+JSだけの静的サイトを ...
.assetsignore はアセットとして配信しないファイルを指定するためのファイルらしいです。 指定方法は .gitignore と同じ。ただ否定が使えなさそう ...
zenn.devzenn.dev
Get started - CLI · Cloudflare Workers docs
Set up and deploy your first Worker with Wrangler, the Cloudflare Developer Platform CLI. This guide will instruct you through setting up and deploying your ...
cloudflare.comcloudflare.com
How to Use CloudFlare Workers and KV to Serve a Static Site
To create a site deployment, CloudFlare has created the Wrangler command-line tool. Wrangler requires installation via either NPM (NodeJS ...
howtogeek.comhowtogeek.com
Static Assets - Workers - Cloudflare Docs
You can upload static assets (HTML, CSS, images and other files) as part of your Worker, and Cloudflare will handle caching and serving them to web browsers.
cloudflare.comcloudflare.com
How to host React, Angular, Vue and other single-page applications ...
Cloudflare Workers introduced support for static assets in September 2024 as part of the effort to unify Cloudflare Workers and Pages.
thomasgauvin.comthomasgauvin.com
GitHub - cloudflare/react-workers-template: Example project ...
#### Cloudflare WorkersでのReactアプリケーションデプロイ概要 「GitHub - cloudflare/react-workers-template」は、Cloudflare Workers上でReactアプリケーションをデプロイする具体的な方法を示すサンプルプロジェクトです。これは、Cloudflare WorkersでReactのコードを実行できる環境を構築したいユーザーにとって、実践的な出発点となる情報を提供しています。 #### プロジェクトの技術的特徴 このプロジェクトは、`create-react-app`ツールを使用して生成された標準的なReactアプリケーションです。デプロイにはCloudflareの`Workers Sites`機能が利用されています。`Workers Sites`は、Cloudflare Workersのグローバルなエッジネットワークを活用し、静的なウェブサイト(この場合はReactアプリケーション)を高速かつ効率的にホストするための機能です。 #### 学習リソース 自身のウェブサイトをCloudflare Workersにデプロイする方法を習得するために、このプロジェクトには対応するビデオチュートリアルとテキストチュートリアルが提供されています。これらは、ReactアプリケーションをCloudflare Workersの環境に展開する具体的な手順とベストプラクティスを学ぶための貴重なリソースとなります。
github.comgithub.com
調査のまとめ
Cloudflare Workersを利用して、ReactやVueのようなシングルページアプリケーション(SPA)や、シンプルなHTMLサイトの実行環境を構築する方法について、調査結果を基に解説します...

🏷 高速化とSEOを実現:ViteやHonoを活用したSSR環境構築と動的HTML操作

Cloudflare Workers + Hono + Vite + React で SSR を実現する - Zenn
React で SSR を行う場合は Next.js や Remix などのフロントエンドフレームワークを使うのが一般的です。しかし今回は Vite 用の Hono プラグインを ...
zenn.devzenn.dev
React Router (formerly Remix) - Workers - Cloudflare Docs
React Router v7 is a full-stack React framework for building web apps, using the Cloudflare Vite plugin and running in the Workers runtime.
cloudflare.comcloudflare.com
From Next.js to React Edge with Cloudflare Workers - Felipe Rohde
Preloads data on the server during SSR. Automatically hydrates data on the client without flicker. Maintains full typing between client and ...
medium.commedium.com
vite-plugin-ssrt使ってReactとCloudflare WorkersでSSR Streaming ...
公式のexampleがあるが、不要なライブラリや設定が含まれていて、ピュアな最小構成とは言えないので、参考にしつつ自分でベアボーンを作成してみる。
zenn.devzenn.dev
Cloudflare Workers - vite-plugin-ssr
We use wrangler publish to deploy our worker to Cloudflare Workers. See the setup of the examples. Universal fetch(). When using Node.js for development and ...
vite-plugin-ssr.comvite-plugin-ssr.com
"Just use Vite”… with the Workers runtime - The Cloudflare Blog
By using the new Environment API, released experimentally in Vite 6, your Worker code can now run inside the native Cloudflare Workers runtime (workerd).
cloudflare.comcloudflare.com
Vitedge: SSR at the edge using Vite and Cloudflare Workers : r/vuejs
#### Vitedgeの概要 このコンテキストは、Redditのr/vuejsコミュニティにおける「Vitedge: SSR at the edge using Vite and Cloudflare Workers」というタイトルの投稿について言及しています。これは、ユーザーが求めている「Cloudflare WorkersでReactやHTMLのコードを実行できる環境を作る方法」の中でも、特にサーバーサイドレンダリング(SSR)に焦点を当てた情報として関連性が高いです。このタイトルから、`Vitedge`は、ビルドツールである`Vite`とエッジコンピューティングプラットフォームである`Cloudflare Workers`を組み合わせて、エッジロケーションでのサーバーサイドレンダリングを実現するプロジェクトであることが示唆されます。これにより、コンテンツの配信速度向上と低レイテンシが期待されます。 #### 投稿情報 このReddit投稿は`Gialfen`というユーザーによって共有されました。投稿先のコミュニティは`r/vuejs`であり、Vue.jsを使用する開発者がエッジでのSSRの実装に関心を持つ場合に有益な情報源となる可能性があります。 #### 詳細情報への示唆 コンテキストには、このプロジェクトに関する詳細情報が`github.com`で提供されていることが示唆されています。通常、GitHubリポジトリでは、プロジェクトのソースコード、具体的な実装方法、セットアップ手順、関連ドキュメント、および実際のコード例などが公開されています。しかし、提供されたコンテキストには、`github.com`というドメインの記述があるのみで、具体的なGitHubリポジトリのURLは含まれていません。 #### コンテキストの限界 提供されたコンテキストは、Redditの投稿のタイトルと、それがGitHubに関連しているという情報に限定されています。`Vitedge`プロジェクトの具体的な機能、技術的な詳細、サーバーサイドレンダリングの具体的な実装アプローチ、チュートリアル、デプロイ手順、または実践的なコード例といった、ユーザーが探している詳細な情報はこのコンテキストからは得られません。これらの詳細については、`github.com`上の該当するプロジェクトリポジトリを直接参照する必要があります。
reddit.comreddit.com
Aslemammad/vite-plugin-cloudflare
Wrangler. Update your wrangler config to be compatible with the build ... vite-ssr-worker" main = "./dist/worker.js" compatibility_date = "2022-08-10 ...
github.comgithub.com
yusukebe/hono-vite-react-stack
... wrangler dev dist-server/index.js", "deploy": "$npm_execpath run build ... npm uninstall hono-vite-react-stack npm i -D vite-ssr-components. Update your ...
github.comgithub.com
cloudflare/vite-plugin doesn't allow optimizeDeps.exclude ...
error when starting dev server: Error: The following environment configurations are incompatible with the Cloudflare Vite plugin: - "ssr" environment: ` ...
github.comgithub.com
SSR not working with the new Vite Cloudflare template on ...
SSR not working with the new Vite Cloudflare template on Cloudflare Pages #8911 ... npm run deploy which seems to do wrangler pages deploy ...
github.comgithub.com
HTMLRewriter · Cloudflare Workers docs
The HTMLRewriter class allows developers to build comprehensive and expressive HTML parsers inside of a Cloudflare Workers application.
cloudflare.comcloudflare.com
Introducing the HTMLRewriter API to Cloudflare Workers
With the HTMLRewriter within Cloudflare Workers, the API calls for dynamic content, (or even calls directly to Workers KV for user-specific ...
cloudflare.comcloudflare.com
Dynamic page content with Cloudflare Workers - Fershad Irani
A brief guide on how Cloudflare Workers can allow you to add random content to your website without client-side JavaScript.
fershad.comfershad.com

🏷 開発効率と性能を最大化する実践テクニック:デバッグ、CI/CD、最適化

GitHub Actions - Workers - Cloudflare Docs
Cloudflare provides an official action for deploying Workers. Refer to the following example workflow which deploys your Worker on push to the main branch.
cloudflare.comcloudflare.com
Deploy to Cloudflare Workers with Wrangler · Actions - GitHub
Add wrangler-action to the workflow for your Workers/Pages application. The below example will deploy a Worker on a git push to the main branch.
github.comgithub.com
gr2m/cloudflare-worker-github-app-example
The worker.js file is a Cloudflare Worker which is continuously deployed using GitHub Actions (see .github/workflows/deploy.yml). The worker does 2 things.
github.comgithub.com
CI/CD · Cloudflare Workers docs
CI/CD for Cloudflare Workers can be set up using the integrated Workers Builds or external providers like GitHub Actions or GitLab CI/CD.
cloudflare.comcloudflare.com
wrangler.tomlとの付き合い方を考える - Zenn
GitHubActionsでデプロイのCDを書いていきます。 結論としてはwrangler.tomlを丸ごとsecretsで渡します。 GHAのsecretsにWRANGLER_TOMLを作成しwrangler.
zenn.devzenn.dev
【CloudflareのWorkers】wranglerのCI/CDを試してみました
Workersのドキュメントを眺めていたところ、CI/CDの記述を見つけました。気になったのでGUTHUB ACTIONを使用して実際に試してみました。
accelia.netaccelia.net
Next.jsのISRを独自に構築する ~ Cloudflare Workers編(Cache API ...
そもそもCloudflare WorkersのCache APIは同一キーでもキャッシュがヒットしない場合がある。 キャッシュヒット率を考えるなら fetch だったり、 ...
zenn.devzenn.dev
Cloudflare Pagesで動かしているRemixでサーバーサイドキャッシュ ...
Cloudflare Pages (+ Functions) で動かしている Remix でサーバーサイドキャッシュする手法をご紹介します。 サーバーサイドキャッシュの ...
kokeshing.comkokeshing.com
Cloudflare Workersで動的コンテンツをキャッシュする際の新たな ...
動的コンテンツのキャッシュ • 例えば、SSR/ISRの様にその時々で ... 他のキャッシュとしての選択肢 • Cache API • KVストア • Upstash • etc…
speakerdeck.comspeakerdeck.com
Caching and data revalidation in your Next.js app - Cloudflare Docs
You can configure your Next.js app to write cache entries to and read from either Workers KV or the Cache API. Workers KV (recommended).
cloudflare.comcloudflare.com
An implementation of stale-while-revalidate for Cloudflare Workers
A. Req 1 gets old data and triggers a cache refresh. B. Req 2 gets same old data and triggers a cache refresh. C. Req 2 gets the fresh data triggered by Req ...
github.comgithub.com
How to serve stale-while-revalidate using a worker?
Hi there, Since Cloudflare doesn't support stale-while-revalidate, we are trying to make this work using the Cache API + Worker.
cloudflare.comcloudflare.com
Debugging - Workers - Cloudflare Docs
With this set up, you can run vite dev or vite preview and then select Debug Workers at the top of the Run & Debug panel to start debugging. Was ...
cloudflare.comcloudflare.com
Debug, profile, and view logs for your Worker in Chrome Devtools ...
Workers - Debug, profile, and view logs for your Worker in Chrome Devtools — now supported in the Cloudflare Vite plugin · Debug code by setting ...
cloudflare.comcloudflare.com
Overcoming the Cloudflare Asset File Limit Using GitHub Actions
Optimize the Build: We attempted to reduce the size of the problematic asset through code splitting, tree shaking, and other build optimizations ...
developersteve.comdevelopersteve.com
Build Failure Due to Pages Functions Bundle Size Exceeding Limit
Remove any dependencies you don't need, if you can tree shake a specific one better do that, try to find less heavy dependencies. Alternatively ...
cloudflare.comcloudflare.com
調査のまとめ
Cloudflare WorkersでReactやHTMLのコードを実行する環境を構築した後の、より実践的で高度な開発ワークフローやパフォーマンス最適化手法について、調査結果を基に解説します。ローカル...

📖 レポートに利用されていない参考文献

検索結果: 141件追加のソース: 0件チャット: 0件
Cloudflare WorkersのHTMLRewriter を使って超簡単に他サイトの ...
Cloudflare WorkersのHTMLRewriter を使って超簡単に他サイトのOGPを取得し自ブログに表示してみた! 2023/06/04 に公開.
zenn.devzenn.dev
Cloudflare Workersを利用した静的配信ページへの動的なOGP ...
実現には様々な方法が考えられますが、今回はCloudflare WorkersのHTML Rewriterを用いて実現することにしました。以下のような形で実現します。 HTML ...
pixiv.blogpixiv.blog
第5回 Webサイトのホスティングと、HTMLの書き換え - CodeGrid
Cloudflare Workersを使ってWebサイトをホスティングする方法を解説します。HTMLをストリーミングで書き換えることのできるHTMLRewriterを利用することで ...
codegrid.netcodegrid.net
そこまで静的でもなく...Cloudflare WorkersへのHTMLRewriter API ...
Cloudflare Workersをすでに使用している場合は、ドキュメント(サインアップなどは必要ありません)を参照するだけで、HTMLRewriterを使い始めることができ ...
cloudflare.comcloudflare.com
サーバーレス入門。初めてでもわかるCloudflare Workersの書き方 ...
本文書では初めてCloudflare Workersを使う人を対象にアカウントの作成からデプロイの方法、シンプルなコードを使ってCloudflareの基本的な利用方法の説明 ...
reffect.co.jpreffect.co.jp
Cloudflare Workersとは?サーバーレスで動作するJavaScript実行 ...
Cloudflare Workersは主にJavaScriptおよびTypeScriptで記述されることを想定して設計されています。Web標準のService Worker APIに似た記述方法を採用し ...
issoh.co.jpissoh.co.jp
Cloudflare Workersのチュートリアルをやってみた - DevelopersIO
Cloudflare Workers では、リクエストを fetch イベントで受け取り、ハンドラ関数でレスポンスを返すと言った流れです。下記の構成だと、リクエストを受け取った後、Body ...
classmethod.jpclassmethod.jp
Workersを使って誰もがCloudflare上でJavaScriptを実行できるように ...
cloudflare.comcloudflare.com
Workers KVを使って、cdnjsをサーバーレスに移行する
cloudflare.comcloudflare.com
フロントエンド、バックエンド、データベースが1つのCloudflare Workerに
cloudflare.comcloudflare.com
第10回:Cloudflareの紹介と運用のポイント - CADDi Tech Blog
caddi.techcaddi.tech
Cloudflare Workersのユースケースと開発方法 - Speaker Deck
speakerdeck.comspeakerdeck.com
Commands - Wrangler · Cloudflare Workers docs
Folder of static assets to be served. Replaces Workers Sites. Visit assets for more information. --site string optional deprecated, use `--assets`.
cloudflare.comcloudflare.com
Deploy a Static website on Cloudflare Workers and Pages - Medium
Step 2: Install Wrangler. To manage Cloudflare Workers from your local machine, you'll need Wrangler, the CLI tool for Cloudflare Workers.
medium.commedium.com
Hosting a Static Website with Cloudflare Worker - github - Tenten AI
To host a static website with Cloudflare Workers, start by signing up for a Cloudflare account at cloudflare.com. Install the Wrangler CLI using ...
tenten.cotenten.co
Hosting a static website for free in 15 minutes with Cloudflare ...
Missing: CLI tutorial
cindypotvin.comcindypotvin.com
Hide Your API Keys on a Static Site with Cloudflare Workers
A step‑by‑step guide for GitHub Pages (or any static host). TL;DR — A static site can't keep secrets. Ship them to a Cloudflare Worker ...
medium.commedium.com
Deploying a Static Site - Vite
Install Wrangler CLI. · Authenticate Wrangler with your Cloudflare account using wrangler login . · Run your build command. · Deploy using npx wrangler pages ...
vite.devvite.dev
Deploying a static site to Cloudflare Pages - Coding with Jesse
Cloudflare Pages works easiest with a static website. It's very possible to run websites with server-side code using Cloudflare Workers.
codingwithjesse.comcodingwithjesse.com
Deploy your Astro Site to Cloudflare | Docs
Install Wrangler CLI. Terminal window · If your site uses on demand rendering, install the @astrojs/cloudflare adapter. · Create a Wrangler configuration file.
astro.buildastro.build
Deploying Pages Functions with wrangler cli - Cloudflare Pages ...
cloudflare.comcloudflare.com
Workers Sites: Extending the Workers platform with our own ...
cloudflare.comcloudflare.com
Cloudflare Pages: FREE Hosting for Any Static Site | FOSS Engineer
fossengineer.comfossengineer.com
GitHub - cloudflare/wrangler-action: ‍♀️ easily deploy ...
github.comgithub.com
Not able to publish the static sites using the cloudflare workers ...
cloudflare.comcloudflare.com
Your frontend, backend, and database — now in one Cloudflare ...
In September 2024, we introduced beta support for hosting, storing, and serving static assets for free on Cloudflare Workers — something that ...
cloudflare.comcloudflare.com
Workers & Pages Pricing - Cloudflare
$0/mo ; Workers features. Includes 100k requests per day. Max 10ms CPU time per request ; Key-value storage features. 100,000 read operations per day. 1,000 write ...
cloudflare.comcloudflare.com
Store and retrieve static assets · Cloudflare Workers KV docs
By storing static assets in Workers KV, you can retrieve these assets globally with low-latency and high throughput. You can then serve these assets directly.
cloudflare.comcloudflare.com
Building a mimimal static site with Cloudflare Workers
Cloudflare recently announced static assets for workers. You can now deploy static files with a worker, instead of shipping worker code in your ...
jldec.mejldec.me
Static Assets on Worker : r/CloudFlare - Reddit
What am I doing wrong ? I setup and uploaded the static assets in the worker and have "not" put the "run worker first" in the wrangler.jsonc ...
reddit.comreddit.com
Workers for Platforms now supports Static Assets - Changelog
Static Sites: Host and serve HTML, CSS, JavaScript, and media files directly from Cloudflare's network, ensuring fast loading times worldwide.
cloudflare.comcloudflare.com
Hosting Static Page Using Cloudflare Workers
youtube.comyoutube.com
simplest static asset hosting - Cloudflare Developers
answeroverflow.comansweroverflow.com
Full-stack (SSR) · Cloudflare Pages docs
An open-source React.js framework for building full-stack applications. This section helps you deploy a full-stack Next.js project to Cloudflare Pages.
cloudflare.comcloudflare.com
Cloudflare WorkersでSSRができると何が嬉しいか - Zenn
ほとんどのWebサービスはSSRなしでSPAとしてビルドし、Cloudflare PagesやGitHub Pagesに静的ファイルをのせて動かせば十分だと思います。 例えば僕が先日 ...
zenn.devzenn.dev
Cloudflare Workers + react router v7 でサクサクWebアプリを作る。
なお以下は、Cloudflare Workers + React Router v7 におけるリクエスト・レスポンスの大まかな流れ(SSR)です。 気になる方は見てみてください。
classmethod.jpclassmethod.jp
vite-plugin-ssr使ってReactとCloudflare WorkersでSSR Streamingする
>Cloudflare Workers micro-frontend のソースを色々弄って、フラグメントをQwikからReactに書き換える過程で、小規模でCloudflare WorkersでSSR StreamingできるReactのビ ...
scrapbox.ioscrapbox.io
React Router v7(Remix)&Cloudflare Workersで多国語(i18n ... - Qiita
Cloudflare Workers CLIを使って、React Router v7ベースのプロジェクトをテンプレートから簡単に生成します。 □ Note Cloudflareの登録過程、Deploy時の ...
qiita.comqiita.com
Rendering React on the Edge with Flareact and Cloudflare Workers
Flareact is a new open-source React framework built for Cloudflare Workers. It allows you to render your React apps at the edge rather than ...
cloudflare.comcloudflare.com
Deploy your React App to Cloudflare Workers #tutorial
youtube.comyoutube.com
A Beginner's Guide to Serverless React using Cloudflare Workers ...
medium.commedium.com
How to Implement Server-Side Rendering (SSR) in React
pixelfreestudio.compixelfreestudio.com
Using with a Workers SSR React app · Issue #164 · cloudflare ...
github.comgithub.com
GitHub - bbg/hono-react-cloudflare: Example project showing how to ...
github.comgithub.com
Vite Environments · Cloudflare Workers docs
The Vite Environment API, released in Vite 6, is the key feature that enables the Cloudflare Vite plugin to integrate Vite directly with the Workers runtime.
cloudflare.comcloudflare.com
Cloudflare Pages - vite-plugin-ssr
Pre-rendering with vite-plugin-ssr allows deployment to Cloudflare Pages. You can build locally, use GitHub actions, or let Cloudflare Pages build your app.
vite-plugin-ssr.comvite-plugin-ssr.com
travis-r6s/vite-plugin-ssr-cloudflare-pages - GitHub
When adding your site to Cloudflare Pages, make sure to set the Build command to npm run build , and the Build output directory to /dist/assets .
github.comgithub.com
パフォーマンスの高みを目指せ! CDNのエッジサーバーでSSR
Viteには『vite-plugin-ssr』というSSR用のプラグインがあります。ドキュメント内の「DEPLOY - Cloudflare Pages」の手順に従いましょう。今回は「Example ...
ics.mediaics.media
SSR web worker build with `noExternal: true` omit dynamic imports ...
github.comgithub.com
cloudflare/workers-types examples - CodeSandbox
codesandbox.iocodesandbox.io
vite-plugin-cloudflare-workers · Issue #223 · vikejs/vike · GitHub
github.comgithub.com
Vite 2.7.0-beta.4 regression when building for SSR targeting ...
github.comgithub.com
How does server the deployment work in Cloudflare remix ...
... SSR. So...how. One additional question, it was quite nice having ... I believe Wrangler will load the server assets from the functions folder by ...
github.comgithub.com
🚀 Feature Request: implement Vite plugin for Wrangler's ...
To support this, we should implement a Vite plugin that mimics Wrangler's ... SSR build via Vite and the second as part of wrangler deploy ). If ...
github.comgithub.com
vite/docs/guide/static-deploy.md at main
SSR refers to front-end frameworks that support running the same application ... Authenticate Wrangler with your Cloudflare account using wrangler login .
github.comgithub.com
Vite plugin has race condition with HMR - A hanging ...
... [vite] (ssr) page reload app/welcome/welcome.tsx. Oh! I should ... I upgraded all vite and cloudflare/wrangler and react router deps to ...
github.comgithub.com
[@hono/vite-dev-server] feature request: Support wrangler. ...
I am considering switching from Wrangler to Vite + dev-Server. However, since my wrangler ... ssr: { external: ['__STATIC_CONTENT_MANIFEST ...
github.comgithub.com
Cloudflare Vite Plugin for React Router v7 [Auxiliary workers ...
github.comgithub.com
HTMLRewriter dynamic text replacement on all elements
The proper fix here is for Cloudflare to update the HTMLRewriter such that it only passes text chunks to the client after lastInTextNode is true.
cloudflare.comcloudflare.com
How to replace the content of an element using HTMLRewriter
I am writing a script that replaces the content of an element with new (static) text. Nothing fancy. I am new to working with Workers and HTMLRewriter.
cloudflare.comcloudflare.com
Move content with HTMLRewriter delete and append? - Workers
I am dynamically showing and hiding content using HTMLRewriter. Now I am trying to move content from the top of the page to the bottom. Is that possible?
cloudflare.comcloudflare.com
Access nested elements in HTMLRewriter - Cloudflare Workers
I have to access a nested element using HTMLRewriter in a Cloudflare worker. Example <div data-code="ABC"> <div class="title"> ...
stackoverflow.comstackoverflow.com
HTML Rewriter : If element contains text - do something with attributes
Please share an example with HTMLRewriter - if element contains text, for example <a> or <p> then do something with attributes.
cloudflare.comcloudflare.com
HTMLRewriter dynamic text replacement on all elements - Page 2
Try using text.replace(content, { html: true }) . The { html: true } option tells HTMLRewriter not to escape any of the new content, but instead to insert it ...
cloudflare.comcloudflare.com
Turn any page into a JSON API with Cloudflare Workers - Mike Street
The original purpose of the HTMLRewriter is to modify the response - you could use it to add some dynamic content to a static page, for example.
mikestreety.co.ukmikestreety.co.uk
Asynchronous HTMLRewriter for Cloudflare Workers
cloudflare.comcloudflare.com
A History of HTML Parsing at Cloudflare: Part 2
cloudflare.comcloudflare.com
Localizing applications with Cloudflare Workers' new streaming ...
dev.todev.to
Serverless Rendering with Cloudflare Workers
cloudflare.comcloudflare.com
Localize a website with HTMLRewriter · Cloudflare Pages docs
cloudflare.comcloudflare.com
HTMLRewriter escaping ampersand when using text() method ...
cloudflare.comcloudflare.com
Cloudflare Workers プロジェクト作成から GitHub Actions 自動 ...
Cloudflare Workers プロジェクト作成から GitHub Actions 自動デプロイまで最速でやる ... Cloudflare の公式ドキュメントはこちら。 External CI/CD · ...
zenn.devzenn.dev
Cloudflare Workers + Github Actionsで一つのリポジトリから環境毎 ...
Cloudflare Workers で Github Actions を使用して環境毎にデプロイする方法で少し詰まったのでその際のメモです。
zenn.devzenn.dev
GitHub ActionsでCloudflare Workersをデプロイする - ひよこまめ
このページで紹介する方法は、Cloudflare WorkersのStatic Assets機能を利用したワーカーをデプロイすることを想定します。 デプロイするワーカーの設定 ...
chick-p.workchick-p.work
GitHub Actionsを使ってCloudflare Workersを自動にデプロイする
1. Cloudflare Workers プロジェクトとGitHub リポジトリを作成 · 2. CloudflareのAPI TokenとAccount IDを取得 · 3. GitHub Actionsを設定 · 4. Workflowを ...
qiita.comqiita.com
Deploy a GitHub Application to Cloudflare Workers - DEV Community
Create a new GitHub actions secret named CF_API_TOKEN , get its value from Cloudflare's create a new token using the "Edit Cloudflare Workers" ...
dev.todev.to
Deploy to Cloudflare pages from Github actions - Ana's Dev Scribbles
In this article, I'll walk you through two methods for setting up deployments on Cloudflare Pages. The first uses Cloudflare's built-in automatic deployments.
amarjanica.comamarjanica.com
Deploy to Cloudflare buttons · Cloudflare Workers docs
cloudflare.comcloudflare.com
Deploying Workers with GitHub Actions + Serverless
cloudflare.comcloudflare.com
A Full CI/CD Pipeline for Cloudflare Workers with Github Actions ...
serviops.caserviops.ca
Introducing Deploy Buttons
cloudflare.comcloudflare.com
How to Deploy a Hugo Site to Cloudflare Workers Sites with GitHub ...
brianli.combrianli.com
Versions & Deployments · Cloudflare Workers docs
cloudflare.comcloudflare.com
Cloudflare Workers の wrangler.toml に環境変数を書かないで管理する
wrangler secret put <key> で設定することもできます。デプロイ先とローカルで同じ API キーを使う場合はこちらで設定する方が良いと思います。 挙動を ...
zenn.devzenn.dev
Configuration - Wrangler · Cloudflare Workers docs
Use a configuration file to customize the development and deployment setup for your Worker project and other Developer Platform products.
cloudflare.comcloudflare.com
How to handle the wrangler.toml configuration file? #7115 - GitHub
I am using Cloudflare Workers to build open source projects, but every time I have a question, what do I do with the wrangler.toml file?
github.comgithub.com
Cloudflare Workersの自動デプロイの失敗を解決した #GitHub - Qiita
GitHub Actionsでインストールされて動作するWrangler (v3.90.0)は wrangler.toml がないとエラーが発生されます。 これが、今回の自動デプロイ失敗の原因 ...
qiita.comqiita.com
Allow to include secrets in wrangler's automatically generated type ...
Currently, there is no way to let wrangler know about secrets so that it can include them in the automatically generated type definitions ( wrangler types ...
github.comgithub.com
How I Set Up CI/CD Pipeline for Cloudflare Worker - Jerry Ng
Guide on how to set up full Cloudflare Worker CI/CD using GitHub Actions. Run smoke and integration tests on CI/CD using k6 and wrangler ...
jerrynsh.comjerrynsh.com
Cloudflare Workersでサーバレス開発 part2 GitHub ActionsによるCI ...
今回はGitHub ActionsとWranglerによるCI/CD対応についてデプロイ周りの補足説明をします。 Wrangler GitHub Action. WranglerによるGitHub Action用の ...
rest-term.comrest-term.com
wrangler.toml Secrets · Issue #17 · cloudflare/wrangler-action ...
github.comgithub.com
include secrets in wrangler publish · Issue #911 · cloudflare ...
github.comgithub.com
feature request: secrets publishing · Issue #19 · cloudflare ...
github.comgithub.com
GitHub - eidam/gitlab-wrangler-action: ✨ Zero-config Cloudflare ...
github.comgithub.com
BUG: wrangler should fail if secrets put is used in a pages ...
github.comgithub.com
Announcing Pages support for monorepos, wrangler.toml, database ...
cloudflare.comcloudflare.com
Using the Cache API - Workers - Cloudflare Docs
Check whether the value is already available in the cache. If not, you will need to fetch it from origin, and store it in the cache.
cloudflare.comcloudflare.com
Cache - Workers - Cloudflare Docs
The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache.
cloudflare.comcloudflare.com
How the Cache works · Cloudflare Workers docs
The cache can provide ephemeral, data center-local storage, as a convenient way to frequently access static or dynamic content.
cloudflare.comcloudflare.com
New Options for Caching Dynamic Content with Cloudflare Workers
Cache dynamic content • For example, there are patterns such as SSR/ISR where the content changes each time it is accessed, or where the ...
speakerdeck.comspeakerdeck.com
Simple Caching with Cloudflare Workers - YouTube
KV Architecture: https://developers.cloudflare.com/workers/learning/how-kv-works/ KV in Workers: ...
youtube.comyoutube.com
Introducing the Workers Cache API: Giving you control over how ...
cloudflare.comcloudflare.com
Customize cache behavior with Workers · Cloudflare Cache (CDN) docs
cloudflare.comcloudflare.com
Cloudflare Workers as an API gateway
screenshotone.comscreenshotone.com
Serving our single page application using Cloudflare Workers | by ...
medium.commedium.com
Custom caching strategy using Cloudflare Workers | by Akash ...
lenskart.comlenskart.com
Support for stale-while-revalidate - Cloudflare Community
With the stale-while-revalidate directive, your users no longer need to wait for responses from origins, because stale content is rapidly served ...
cloudflare.comcloudflare.com
Revalidation and request collapsing - Cache / CDN - Cloudflare Docs
For stale (expired TTL) content, Cloudflare will send a revalidation request to the origin. If the stale content is still valid Cloudflare will ...
cloudflare.comcloudflare.com
How to get stale-while-revalidate to work with Cloudflare cache rules?
However, on returning to page after 30 minutes, I am getting cache MISS response. So how do I make stale-while-revalidate work as expected?
reddit.comreddit.com
Stale-while-revalidate Does not work at all - Cloudflare Community
Cloudflare is not serving staled content while revalidating expired cached request, since it is serving the updated php output.
cloudflare.comcloudflare.com
How to disallow STALE content being served when origin is down?
What Cloudflare does for stale-while-revalidate is it will only serve a stale asset on revalidation when there are concurrent requests to the ...
cloudflare.comcloudflare.com
HTTP Cache: Finding a performance improvement on frameworks ...
Stale while revalidate. Sometimes, it's okay to serve a stale cache of the resource. For that, there is stale-while-revalidate : HTTP/1.1 200 ...
benjavicente.devbenjavicente.dev
Origin Cache Control · Cloudflare Cache (CDN) docs
stale-while-revalidate=<seconds> — When present in an HTTP response, indicates caches may serve the response in which it appears after it becomes stale, up to ...
cloudflare.comcloudflare.com
Does Cloudflare support stale-while-revalidate?
kerkour.comkerkour.com
How to disallow STALE content being served when origin is down ...
cloudflare.comcloudflare.com
workbox-strategies | Modules | Chrome for Developers
chrome.comchrome.com
Keeping things fresh with stale-while-revalidate | Articles | web.dev
web.devweb.dev
DevTools - Workers - Cloudflare Docs
Run your Worker locally, by running wrangler dev; Press the D key from your terminal to open DevTools in a browser tab. Vite. Run your Worker ...
cloudflare.comcloudflare.com
Development & testing · Cloudflare Workers docs
You can build, run, and test your Worker code on your own local machine before deploying it to Cloudflare's network. This is made possible through Miniflare.
cloudflare.comcloudflare.com
Breakpoints - Workers - Cloudflare Docs
When developing a Worker locally using Wrangler or Vite, you can debug via breakpoints in your Worker. Breakpoints provide the ability to ...
cloudflare.comcloudflare.com
Containers don't work with @cloudflare/vite-plugin #9793 - GitHub
Containers don't work in local development with the @cloudflare/vite-plugin. When a container endpoint is attempted to be fetched one gets ...
github.comgithub.com
Debugging - Workers - Cloudflare Docs
Select Debug Workers tests at the top of the Run & Debug panel to open an inspector with Vitest and attach a debugger to the Workers runtime.
cloudflare.comcloudflare.com
Debugging a deploy issue in a Remix + Vite Project - Answer Overflow
Running pages dev locally is a great way to debug issues. Just off the top of my head tho, one thing I encountered when migrating to Vite ...
answeroverflow.comansweroverflow.com
How to put breakpoints and debug Cloudflare Workers?
At present (March 2022), breakpoints are not yet supported by Cloudflare Workers. We'd like to support them eventually.
stackoverflow.comstackoverflow.com
Vite - Remix
To configure bindings for Cloudflare resources: For local development with Vite or Wrangler, use wrangler.toml; For deployments, use the Cloudflare dashboard.
remix.runremix.run
Attaching a Debugger · Cloudflare Workers docs
cloudflare.comcloudflare.com
Better debugging for Cloudflare Workers, now with breakpoints
cloudflare.comcloudflare.com
BUG: @cloudflare/vite-plugin fails to run project with Stripe ...
github.comgithub.com
Tanstack Start] Tanstack Start has updated to use vite directly ...
github.comgithub.com
My journey through the ESM Tree Shaking forest - Pixelastic
First, I realized that the bundle size was way too big for what my function was actually doing. I had ~100 lines of code at most, but my bundle ...
pixelastic.compixelastic.com
TypeScript support, build too large · Issue #19 - GitHub
When I use bundle optimize helper it says a bunch of deps are not tree shakeable because they're not using ES modules.
github.comgithub.com
Tree Shaking | Sentry for Cloudflare
Learn how to reduce Sentry bundle size by tree shaking unused code. The Sentry SDK supports tree shaking in various ways. To fully utilize the tree shaking ...
sentry.iosentry.io
Optimize your client-side bundle size by tree shaking your ... - Arc XP
Tree shaking only works for your modules including ES6 entry point and uses ES6 imports. When your imports are referring to a module that is ...
arcxp.comarcxp.com
Limits · Cloudflare Workers docs
Missing: tree shaking
cloudflare.comcloudflare.com
Tree-shaking, the horticulturally misguided algorithm (2023)
- Use brotli compression for serving wasm bundles to the browser, and make sure your web server is setup to use the brotli compressed files. ( ...
ycombinator.comycombinator.com
Pages Functions bundle size is over the limit of 25.0 MiB
Barely change bundle size based on Cloudflare ... Sumup of solution: Load specific things from packages if package support tree shaking.
cloudflare.comcloudflare.com
Optimize your Bundle Size with SWC and GraphQL Codegen | Hive
This plugin uses the SWC compiler to optimize the generated code, reducing the bundle size for all your SWC projects!
the-guild.devthe-guild.dev
Tree shaking in JavaScript (Optimize the bundle size of your application) | Complete Example + Setup
youtube.comyoutube.com
Tree shaking · Issue #151 · supabase/supabase-js · GitHub
github.comgithub.com
Optimize your bundle size by eliminating dead code / tree-shaking ...
mfyz.commfyz.com
Ant Design Bundle Size Optimization: The Tree Shaking Approach ...
dev.todev.to

📊 ドメイン統計

参照ドメイン数: 55引用済み: 14総文献数: 259
1
Favicon for https://cloudflare.comcloudflare.com
引用: 14件/ 総数: 99件
引用率: 14.1%
2
Favicon for https://github.comgithub.com
引用: 8件/ 総数: 52件
引用率: 15.4%
3
Favicon for https://zenn.devzenn.dev
引用: 5件/ 総数: 12件
引用率: 41.7%
4
Favicon for https://medium.commedium.com
引用: 1件/ 総数: 7件
引用率: 14.3%
5
Favicon for https://speakerdeck.comspeakerdeck.com
引用: 1件/ 総数: 4件
引用率: 25.0%
6
Favicon for https://qiita.comqiita.com
引用: 1件/ 総数: 4件
引用率: 25.0%
7
Favicon for https://howtogeek.comhowtogeek.com
引用: 1件/ 総数: 4件
引用率: 25.0%
8
Favicon for https://reddit.comreddit.com
引用: 1件/ 総数: 3件
引用率: 33.3%
9
Favicon for https://thomasgauvin.comthomasgauvin.com
引用: 1件/ 総数: 3件
引用率: 33.3%
10
Favicon for https://vite-plugin-ssr.comvite-plugin-ssr.com
引用: 1件/ 総数: 2件
引用率: 50.0%
11
Favicon for https://fershad.comfershad.com
引用: 1件/ 総数: 1件
引用率: 100.0%
12
Favicon for https://accelia.netaccelia.net
引用: 1件/ 総数: 1件
引用率: 100.0%
13
Favicon for https://kokeshing.comkokeshing.com
引用: 1件/ 総数: 1件
引用率: 100.0%
14
Favicon for https://developersteve.comdevelopersteve.com
引用: 1件/ 総数: 1件
引用率: 100.0%
15
Favicon for https://dev.todev.to
引用: 0件/ 総数: 6件
引用率: 0.0%
16
Favicon for https://reffect.co.jpreffect.co.jp
引用: 0件/ 総数: 4件
引用率: 0.0%
17
Favicon for https://youtube.comyoutube.com
引用: 0件/ 総数: 4件
引用率: 0.0%
18
Favicon for https://pixelastic.compixelastic.com
引用: 0件/ 総数: 4件
引用率: 0.0%
19
Favicon for https://pixiv.blogpixiv.blog
引用: 0件/ 総数: 3件
引用率: 0.0%
20
Favicon for https://classmethod.jpclassmethod.jp
引用: 0件/ 総数: 2件
引用率: 0.0%
21
Favicon for https://tenten.cotenten.co
引用: 0件/ 総数: 2件
引用率: 0.0%
22
Favicon for https://cindypotvin.comcindypotvin.com
引用: 0件/ 総数: 2件
引用率: 0.0%
23
Favicon for https://answeroverflow.comansweroverflow.com
引用: 0件/ 総数: 2件
引用率: 0.0%
24
Favicon for https://scrapbox.ioscrapbox.io
引用: 0件/ 総数: 2件
引用率: 0.0%
25
Favicon for https://stackoverflow.comstackoverflow.com
引用: 0件/ 総数: 2件
引用率: 0.0%
26
Favicon for https://serviops.caserviops.ca
引用: 0件/ 総数: 2件
引用率: 0.0%
27
Favicon for https://arcxp.comarcxp.com
引用: 0件/ 総数: 2件
引用率: 0.0%
28
Favicon for https://codegrid.netcodegrid.net
引用: 0件/ 総数: 1件
引用率: 0.0%
29
Favicon for https://issoh.co.jpissoh.co.jp
引用: 0件/ 総数: 1件
引用率: 0.0%
30
Favicon for https://caddi.techcaddi.tech
引用: 0件/ 総数: 1件
引用率: 0.0%
31
Favicon for https://vite.devvite.dev
引用: 0件/ 総数: 1件
引用率: 0.0%
32
Favicon for https://codingwithjesse.comcodingwithjesse.com
引用: 0件/ 総数: 1件
引用率: 0.0%
33
Favicon for https://astro.buildastro.build
引用: 0件/ 総数: 1件
引用率: 0.0%
34
Favicon for https://fossengineer.comfossengineer.com
引用: 0件/ 総数: 1件
引用率: 0.0%
35
Favicon for https://jldec.mejldec.me
引用: 0件/ 総数: 1件
引用率: 0.0%
36
Favicon for https://pixelfreestudio.compixelfreestudio.com
引用: 0件/ 総数: 1件
引用率: 0.0%
37
Favicon for https://ics.mediaics.media
引用: 0件/ 総数: 1件
引用率: 0.0%
38
Favicon for https://codesandbox.iocodesandbox.io
引用: 0件/ 総数: 1件
引用率: 0.0%
39
Favicon for https://mikestreety.co.ukmikestreety.co.uk
引用: 0件/ 総数: 1件
引用率: 0.0%
40
Favicon for https://chick-p.workchick-p.work
引用: 0件/ 総数: 1件
引用率: 0.0%
41
Favicon for https://amarjanica.comamarjanica.com
引用: 0件/ 総数: 1件
引用率: 0.0%
42
Favicon for https://brianli.combrianli.com
引用: 0件/ 総数: 1件
引用率: 0.0%
43
Favicon for https://jerrynsh.comjerrynsh.com
引用: 0件/ 総数: 1件
引用率: 0.0%
44
Favicon for https://rest-term.comrest-term.com
引用: 0件/ 総数: 1件
引用率: 0.0%
45
Favicon for https://screenshotone.comscreenshotone.com
引用: 0件/ 総数: 1件
引用率: 0.0%
46
Favicon for https://lenskart.comlenskart.com
引用: 0件/ 総数: 1件
引用率: 0.0%
47
Favicon for https://benjavicente.devbenjavicente.dev
引用: 0件/ 総数: 1件
引用率: 0.0%
48
Favicon for https://kerkour.comkerkour.com
引用: 0件/ 総数: 1件
引用率: 0.0%
49
Favicon for https://chrome.comchrome.com
引用: 0件/ 総数: 1件
引用率: 0.0%
50
Favicon for https://web.devweb.dev
引用: 0件/ 総数: 1件
引用率: 0.0%
51
Favicon for https://remix.runremix.run
引用: 0件/ 総数: 1件
引用率: 0.0%
52
Favicon for https://sentry.iosentry.io
引用: 0件/ 総数: 1件
引用率: 0.0%
53
Favicon for https://ycombinator.comycombinator.com
引用: 0件/ 総数: 1件
引用率: 0.0%
54
Favicon for https://the-guild.devthe-guild.dev
引用: 0件/ 総数: 1件
引用率: 0.0%
55
Favicon for https://mfyz.commfyz.com
引用: 0件/ 総数: 1件
引用率: 0.0%

このレポートが参考になりましたか?

あなたの仕事の調査業務をワンボタンでレポートにできます。

無料でリサーチ

新しいテーマを調査する

運営会社サービス概要メディア
  • 📜要約
  • 📊ビジュアライズ
  • 🖼関連する画像
  • 🔍詳細
    • 🏷静的から動的、SSRまで:Cloudflare Workersでの実行パターン3選
    • 🏷まずはここから!ReactやHTMLを静的サイトとして高速配信する基本手順
    • 🏷高速化とSEOを実現:ViteやHonoを活用したSSR環境構築と動的HTML操作
    • 🏷開発効率と性能を最大化する実践テクニック:デバッグ、CI/CD、最適化
  • 🖍考察
  • 📚参考文献
    • 📖利用された参考文献
    • 📖未使用の参考文献
    • 📊ドメイン統計