プロジェクトアドレス: https://github.com/ray-d-song/web-archive
このツールを構築する理由
私は長い間、ArchiveBox の忠実なユーザーです。 ArchiveBox は非常に優れた Web アーカイブ ツールですが、セルフホスティングが必要で、サーバー要件が高くなります (ヘッドレス ブラウザーが必要)。以前Raspberry Piを使用しましたが、パフォーマンスが良くありませんでした。
また、ログインが必要な x や Medium のような Web サイトの場合、ArchiveBox は手動でトークンや Cookie を設定する必要があり、面倒です。
そこで私は、セルフホスティングを必要とせず、ヘッドレスブラウザを必要とせず、サーバーの要件も必要とせず、クロスプラットフォームに対応できる Web アーカイブ ツールはないだろうかと考えました。そうすれば、いつでも、どこでも、どのデバイスからでも、アーカイブしたページにアクセスできるようになります。
Cloudflareを選ぶ理由
Cloudflare の Workers サービスは非常に強力かつ無料で、豊富な D1 データベースと R2 ストレージ バケットを備えており、このツールの構築に非常に適しています。
さらに重要なのは、Cloudflare のエコシステムが完成しており、ワンクリックの導入とデータ移行をサポートしていることです。 CloudflareのグローバルCDNサービスも利用可能です。
このツールでできること
- [x] フォルダー分類
- [x] ページのプレビュー画像
- [x] タイトルキーワード検索
- [x] ショーケース、キャプチャしたページを共有します
- [x] モバイルサポート
- [x] タグ分類システム
- [x] 読み取りモード
仕組み
ウェブアーカイブは次の部分で構成されます:
- ブラウザ拡張機能: ページを Web ページのスナップショットとして保存し、サーバーにアップロードします。
- サーバー: ブラウザ拡張機能によってアップロードされたスナップショットとメタデータを受信し、データベースとストレージ バケットに保存します。
- Web クライアント: スナップショットをクエリして表示します。
SingleFile のオープンソース コードを使用して、ページを単一の HTML ファイルとして保存しました (画像やビデオも含めます)。
サーバーは完全にCloudflareのWorkersサービスに基づいており、メタデータを保存するためのD1データベースとスナップショットを保存するためのR2ストレージバケットを備えています。
インターフェースの数は少なくありませんが、ORM は使用しませんでした。実際に prisma と drizzle を試しましたが、デプロイメントに非常に手間がかかるため、最終的には使用されませんでした。
Web クライアントは React、Vite、TailwindCSS、shadcn/ui で構築されており、パッケージ化されたサイズはわずか 1.5MB と驚くほど小さいです。パッケージ化された製品はサーバーのアセットフォルダーに埋め込まれるため、サーバーのデプロイ時に別途デプロイする必要はありません。
制限事項
Cloudflare の無料サービスはとても気に入っていますが、いくつか制限があります。
- 単一リクエストの CPU 計算時間は 10 ミリ秒を超えることはできません。10 ミリ秒を超えると強制的に終了されます。 (有料アカウントは30秒だったので驚きました?)
- メモリ使用量は 256MB を超えることはできません。超えない場合は強制終了されます。
これらの制限は、クロール中の ssr や dom の解析など、Web サイトの構築にある程度の影響を与えています。
しかし、どのように言われても、ありがとう、Cloudflare!
以上がCloudflare上で動作するフルスタックのWebアーカイブツールを構築しましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール
