fingerprint maven plugin
1.0.0
フィンガープリントとWebリソースを最適化します。
このプラグインは、いくつかの最適化を実行します。
このプロセス中に、プラグインはファイルチェックサムを計算し、ファイル名にプリデンドします。このファイル名へのすべてのリンクは、フィンガープリントバージョンに変更されます。元のファイルが削除されます。 Webリソースのキャッシングを改善するために使用されるフィンガープリント。ファイルチェックサムが変更されていない場合、名前は同じになり、最大有効期限がヘッダーを追加するのは安全です。ファイルの内容が変更されると、チェックサムも変更されます。このプラグインは、ソースディレクトリを(再帰的に)除外し、以下のパターンを使用してリソースを検出し、ターゲットディレクトリに結果(必要に応じて)をコピーします。
次のパターンを使用して、フィンガープリントの対象となるリソースを検出します。
<link[^>]+href=["'](.*?)["'][^>]*>["']([^s]*?.js)["']<img[^>]+src=["'](.*?)["'][^>]+>url(s*["']?(.*?)["']?s*)<c:url[^>]+value="(.*?)"[^>]+>フィンガープリント後、最大有効期限がヘッダーを追加するのは安全です。
要件
<img src="/img/test.png"><img src="test.png"><img src="${pageContext.request.contextPath}/img/test.png"><img src="${ pageContext.request.contextPath }/test.png"><img src="/img/test.png"><img src="<c:if test="${var}">/img/test.png</c:if>"<img src="${seome.variable}/img/test.png"HTMLの削減中:
preを除く。type="text"デフォルトのタイプであるため、 inputタグから削除されます。 < plugin >
< groupId >com.aerse.maven</ groupId >
< artifactId >fingerprint-maven-plugin</ artifactId >
< version >3.6</ version >
< executions >
< execution >
< phase >package</ phase >
< goals >
< goal >generate</ goal >
</ goals >
</ execution >
</ executions >
< configuration >
< excludeResources >
< excludeResource >://</ excludeResource >
< excludeResource >//</ excludeResource >
< excludeResource >data:</ excludeResource >
</ excludeResources >
<!-- ${basedir}/src/main/webapp by default -->
< sourceDirectory >${basedir}/target/webcombined</ sourceDirectory >
<!-- ${project.build.directory}/optimized-webapp by default -->
< targetDirectory >${basedir}/target/optimized-webapp</ targetDirectory >
<!-- Optional: set to 'false' to disable minification of HTML, JS and/or CSS. -->
< minifyHtml >true</ minifyHtml >
< minifyJs >true</ minifyJs >
< minifyCss >true</ minifyCss >
<!-- Remove unnecessary spaces between tags. Make single line page. Takes into consideration <pre> tags -->
< htmlExtensions >
< htmlExtension >html</ htmlExtension >
< htmlExtension >jsp</ htmlExtension >
< htmlExtension >tag</ htmlExtension >
</ htmlExtensions >
< extensionsToFilter >
< extensionToFilter >html</ extensionToFilter >
< extensionToFilter >jsp</ extensionToFilter >
< extensionToFilter >tag</ extensionToFilter >
< extensionToFilter >css</ extensionToFilter >
< extensionToFilter >js</ extensionToFilter >
</ extensionsToFilter >
<!-- cdn host. Not required. For example using "//accountname.r.worldssl.net": /css/bootstrap.css -> //accountname.r.worldssl.net/css/<md5>bootstrap.css -->
< cdn >${cdn}</ cdn >
<!-- fingerprinted filename. Could be [name].[ext]?hash=[hash] -->
< namePattern >[hash][name].[ext]</ namePattern >
</ configuration >
</ plugin > location ~ ^/.+.(ico|jpg|jpeg|gif|pdf|jar|png|js|css|txt|epf|ttf|svg|woff)$ {
root < your root content>;
expires max;
add_header Cache-Control public;
}