
このプロジェクトは、HTML5ボイラープレート資産とSynopse Mormot Frameworkへの設定を埋め込んでいます。
mORMotBPディレクトリを追加しますAssets.resを作成します。"..Toolsassetslz" "$(PROJECTDIR)Assets" "$(PROJECTDIR)Assets.tmp""..Toolsresedit" -D "$(PROJECTDIR)Assets.res" rcdata ASSETS "$(PROJECTDIR)Assets.tmp"
"..Tools"をmormorbpの相対またはフルディレクトリの場所に置き換えます。
TSQLHttpServerインスタンスの作成をTBoilerplateHTTPServerに置き換えますYourHTTPServerInstance.LoadFromResource('Assets'); assetslzおよびreseditツールを参照)。これにより、単一のファイル分布を構築できます。assetslzツールによって事前に圧縮されます。HTTP.sys高性能ライブラリ( .StaticRootプロパティを参照)に転送する圧縮ファイルを委任し、より興味深い作業のためにサーバースレッドを解放する機能。ETag/Last-ModifiedまたはよりユーザーフレンドリーなLast-Modified/If-Modified-Sinceキャッシュ戦略をサポートします。ExpiresまたはCache-Control: max-ageキャッシュ戦略。bpoEnableCacheBustingおよびbpoEnableCacheBustingBeforeExtオプションを参照)。bpoDelegateHiddenおよびbpoDelegateBlockedオプションを参照)。CSP.pasユニットを参照)。.OnGetAssetイベントを参照)TBoilerplateHTTPServer = class (TSQLHttpServer)Lazarus IDEの下のAssets.resファイルを構築または更新するには、次のメニューを使用します(プロジェクトファイルが開いたとき):
Run / Build File
このメニューコマンドは、 pre-build.shまたはpre-build.batスクリプトを呼び出します。これは、 assetslz32 / assetslz64およびresedit32 / resedit64ツールを使用して、Linux / Windows環境の下で資産を圧縮および埋め込みます。
リソースファイルを再構築する機能について、次のFPC Lazarus IDEディレクティブをプロジェクトファイルに追加します。
{ $IFDEF LINUX }
{ %BuildCommand pre-build.sh $ProjPath() }
{ $ENDIF }
{ $IFDEF MSWINDOWS }
{ %BuildCommand pre-build.bat "$ProjPath()" }
{ $ENDIF } Delphi 5とDelphi 7のBuildOptionsパッケージでKiran Kurapatyに感謝します。彼のコードに基づいて、Delphi 5/6/7/2005/2006の修正されたIDEパッケージは、Delphi 2007以前にすべてのDelphi IDEバージョンでビルドイベントサポートを可能にするために作成されました。
コンポーネント /インストールパッケージ / IDEメニューを追加して、ビルドイベントIDE拡張機能をインストールします。
ToolsBuildEventsBuildEventsD5.bpl for Delphi 5ToolsBuildEventsBuildEventsD6.bpl for delphi 6ToolsBuildEventsBuildEventsD7.bpl for Delphi 7ToolsBuildEventsBuildEventsD2005.bpl for Delphi 2005ToolsBuildEventsBuildEventsD2006.bpl for Delphi 2006このビルドイベントと特別な.batファイルを使用すると、 DEBUGをエミュレートして構成RELEASEできます。詳細については、ビルドイベントREADMEをご覧ください。
DEBUG構成Zopfliアルゴリズムの圧縮性が80倍遅いため、開発やデバッグ中に使用することは合理的ではありません。したがって、すべてのデバッグ構成について、 ASSETSLZツールの-GZ1 -B1オプションを使用して、高速およびライトレベル1圧縮を使用できます。
"..Toolsassetslz" -GZ1 -B1 "$(PROJECTDIR)Assets" "$(PROJECTDIR)Assets.tmp""..Toolsresedit" -D "$(PROJECTDIR)Assets.res" rcdata ASSETS "$(PROJECTDIR)Assets.tmp" RELEASE構成リリース構成には、 bpoForceHTTPSをオンにし、 .StrictSSLプロパティをstrictSSLOnまたはstrictSSLIncludeSubDomainsに設定することをお勧めします。セットアップ.ContentSecurityPolicyプロパティとセキュリティヘッダーサービスで検証します(詳細については、 CSP.pasユニットを参照)。
Server HTTPヘッダーを無効にしますセキュリティ上の理由から、生産時にServerとX-Powered-By HTTPヘッダーを完全に無効にすることができます。これを行うには、 NOXPOWEREDNAMEプロジェクト /オプション /条件付き定義に定義し、すべてを定義して再構築します。
Windows ServerでHTTP.sys APIを使用する場合、次のレジストリキーを追加または変更してServer HTTPヘッダー埋め込み(管理者権利が必要)を無効にします。
セクション: SYSTEMCurrentControlSetServicesHTTPParameters
キー: DisableServerHeader: DWORD = 2
不幸なデフォルトのモルモットHTTPサーバーは、いくつかの圧縮オプションが利用可能な場合に備えて、常に最初の登録圧縮を使用します。オンザフライ生成(HTML、JSON、XMLなど)コンテンツのBrotliサポートを有効にするには、次のことを行います。
mORMotHttpServer.pasユニット(76行目)のデフォルトのデフレート圧縮をオフにします。
前に
{ $define COMPRESSDEFLATE }後
{.$define COMPRESSDEFLATE}
次にBrotli, GZipでHTTPサーバーの圧縮を登録します。
uses
SynZip,
Brotli;
...
HttpServer.RegisterCompress(CompressBrotli);
HttpServer.RegisterCompress(CompressGZip);独自の計算可能な資産とリダイレクトを提供できます。これは役に立ちます:
/404.htmlコンテンツサービス。 BoilerplateHTTPServer.OnGetAssetイベントハンドラーを使用し、変更可能なリソースがマルチスレッドサポートで処理されるようにします。すべての外部資産は、提供されたTimestampプロパティに基づいたETag Last-Modifiedキャッシュ戦略をサポートし、ストレージに静的にアップロードすることができます(たとえば、コンテンツを低レベルのHTTP APIに委任するため)。同じ方法を使用して、特定のURLパスのカスタムリダイレクトを返すことができます。
TAssetsの使用ディレクトリまたはファイルを単一のプロジェクト実行可能ファイルに埋め込むことができます。これにより、生産環境で1つのファイルのみを配布、スケーリング、および実行することができます。リソースからロードし、生産が開始されたときに資産を展開します。 TAssets 、ディスクIO操作を最適化するために保存する前に、変更のタイムスタンプとサイズの変更についてファイルをチェックします。
たとえば、すべての静的資産をAssets.resに圧縮して梱包し、さらに口ひげビューテンプレートを個別のViews.resに梱包できます。
"..Toolsassetslz" "$(PROJECTDIR)Assets" "$(PROJECTDIR)Assets.tmp""..Toolsresedit" -D "$(PROJECTDIR)Assets.res" rcdata ASSETS "$(PROJECTDIR)Assets.tmp""..Toolsassetslz" -E "$(PROJECTDIR)Views" "$(PROJECTDIR)Views.tmp""..Toolsresedit" -D "$(PROJECTDIR)Views.res" rcdata VIEWS "$(PROJECTDIR)Views.tmp"ビューの-Eオプションは、口ひげビューを圧縮する必要がないため、圧縮をスキップすることを意味します。これで、両方のリソースファイルを実行可能ファイルに埋め込むことができます。 {$R *.res}の近くのプロジェクトファイルに次の行を追加するか、プロジェクトに両方のファイルを追加します。
{ $R Assets.res }
{ $R Views.res }次に、生産時に、このような実行可能ファイルからビューを抽出できます。
procedure SaveViews ;
var
Assets: TAssets;
begin
Assets.Init;
Assets.LoadFromResource( ' Views ' );
Assets.SaveAllIdentities( ' Views ' );
end ;RegisterCustomOptionsメソッドを使用すると、異なるHTTP URLパスのさまざまなオプションを微調整できます。たとえば、API JSONコールまたは次のような特別なページのキャッシュの使用を無効にすることができます。
HTTPServer.RegisterCustomOptions(
[ ' /api/json ' , ' /login ' , ' /settings* ' ],
HTTPServer.Options - [bpoSetCachePublic] + [bpoSetCachePrivate,
bpoSetCacheNoCache, bpoSetCacheNoStore, bpoSetCacheMustRevalidate]);TBoilerplateHTTPServer 、 Mormot Test Suiteフレームワークで完全に覆われています。古典的なTDDアプローチの代わりに、動作主導の開発(BDD)シナリオが使用されます。詳細についてはTestsBoilerplateTests.pasを参照してください。
このプロジェクトは、セマンティックバージョンに準拠しています。すべてのリリースは、移行手順とともに、GitHubリリースページに文書化されています。
コードはMITライセンスの下で利用できます。
@gmail.com : eugene.ilyinまでお気軽にお問い合わせください