
이 프로젝트는 HTML5 보일러 플레이트 자산과 Synopse Mormot 프레임 워크 에 설정을 포함합니다.
mORMotBP 디렉토리를 추가하십시오Assets.res 만듭니다."..Toolsassetslz" "$(PROJECTDIR)Assets" "$(PROJECTDIR)Assets.tmp""..Toolsresedit" -D "$(PROJECTDIR)Assets.res" rcdata ASSETS "$(PROJECTDIR)Assets.tmp"
"..Tools"를 Mormorbp Relative 또는 Full Directory 위치로 바꾸십시오.
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
이 메뉴 명령은 assetslz32 / assetslz64 및 resedit32 / resedit64 도구를 사용하는 pre-build.sh 또는 pre-build.bat 스크립트를 호출하여 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 delphi 5 용 buildeventsd5.bplToolsBuildEventsBuildEventsD6.bplToolsBuildEventsBuildEventsD7.bplToolsBuildEventsBuildEventsD2005.bpl for delphi 2005ToolsBuildEventsBuildEventsD2006.bpl delphi 2006 용 BuildEventsd2006.bpl 이 빌드 이벤트 및 특수 .bat 파일을 사용하면 DEBUG 모방하고 RELEASE 할 수 있습니다. 자세한 내용은 Build Events ReadMe를 참조하십시오.
DEBUG 구성 ZOPFLI 알고리즘의 압축 특성 80 배 느린 압축 특성으로 인해 개발 및 디버그 중에 사용하는 것이 합리적이지 않습니다. 따라서 모든 디버그 구성의 경우 -GZ1 -B1 assetslz 옵션으로 빠르고 조명 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 속성 및 Security Headers Service를 사용하여 유효성을 확인하십시오 (자세한 내용은 CSP.pas 장치 참조).
Server HTTP 헤더를 비활성화하십시오 보안상의 이유로 생산시 Server 및 X-Powered-By HTTP 헤더를 완전히 비활성화 할 수 있습니다. 이를 위해 NOXPOWEREDNAME ADD PROJECT / OPTIONS / CONDERIONALINAL 에 정의를 추가하십시오.
Windows 서버에서 HTTP.sys api를 사용하는 경우 Server http 헤더 임베딩 (관리자 권한 필요)을 비활성화하기 위해 다음 레지스트리 키를 추가하거나 수정하십시오.
섹션 : SYSTEMCurrentControlSetServicesHTTPParameters
키 : DisableServerHeader: DWORD = 2
불행히도 기본 모모 모트 HTTP 서버는 여러 압축 옵션을 사용할 수있는 경우 항상 첫 번째 등록 압축을 사용합니다. 현장 생성에 대한 Brotli 지원을 가능하게하려면 (HTML, JSON, XML 등) 컨텐츠는 다음을 수행합니다.
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 사용 단일 프로젝트 실행 파일에 디렉토리 나 파일을 포함시킬 수 있습니다. 이를 통해 프로덕션 환경에서 하나의 파일 만 배포, 스케일 및 실행할 수 있습니다. 자원에서로드하고 생산에 대한 자산을 시작했을 때 자산을 배포하십시오. 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 (Behavior-Driven Development) 시나리오가 사용됩니다. 자세한 내용은 TestsBoilerplateTests.pas 참조하십시오.
이 프로젝트는 시맨틱 버전화를 준수합니다. 마다 마이그레이션 지침과 함께 모든 릴리스는 Github 릴리스 페이지에 문서화되어 있습니다.
이 코드는 MIT 라이센스에 따라 사용할 수 있습니다.
@gmail.com : eugene.ilyin 으로 저에게 연락하십시오