ルールセット参照 rule-set-reference
画像サービングは、正規表現の一致と置換ルールに基づくシンプルなリクエスト前処理メカニズムをサポートしています。
前処理ルールのコレクション(ルールセット)は、画像カタログまたはデフォルトカタログに添付できます。 デフォルトカタログのルールは、リクエストが特定のメイン画像カタログを識別しない場合にのみ適用されます。
リクエスト前処理ルールは、パスの操作、コマンドの追加、コマンド値の変更、テンプレートやマクロの適用など、Platform Serverのパーサーによって処理される前に、リクエストのパスとクエリ部分を変更できます。 また、ルールを使用して、リクエストの難読化、ウォーターマーク、特定のクライアント IP アドレスへのサービス制限など、通常はカタログ属性でのみ制御される特定のセキュリティ機能を設定および上書きすることもできます。
ルールセットは、XML ドキュメントファイルとして保存されます。 ルール セット ファイルの相対パスまたは絶対パスをattribute::RuleSetFileで指定する必要があります。
一般構造 section-8bcbd91ea8a946f28051bde8ad21827f
<?xml version="1.0" encoding="UTF-8"?>
<ruleset>
<rule>
<expression>
<varname>
expression
</varname></expression>
<substitution>
<varname>
substitution
</varname></substitution>
<addressfilter>
<varname>
addressFilter
</varname></addressfilter>
<header>
<varname>
headerValue
</varname></header>
</rule>
</ruleset>
実際のルールが定義されていない場合でも、有効なルールセット XML ファイルでは<?xml>要素と<ruleset>要素が常に必要です。
任意の数の<rule>要素を含む1つの<ruleset>要素を使用できます。
前処理ルールファイルの内容では、大文字と小文字が区別されます。
ルールセットの検証 section-d8d101a0b4d74580835e37d128d05567
RuleSet.xsdのコピーはカタログ フォルダーに提供されます。ルールセット ファイルを検証してからcatalog.ini ファイルに登録する必要があります。 画像サービングでは、検証にRuleSet.xsdの内部コピーが使用されていることに注意してください。
URLの事前処理 section-2c09a2d79ada46b994857c6a7fb4c13a
他の処理の前に、受信HTTP リクエストが部分的に解析され、どの画像カタログを適用するかを決定します。 カタログが識別されると、選択したカタログのルールセット(または特定のカタログが識別されていない場合はデフォルトのカタログ)が適用されます。
<rule>要素は、<expression>要素(expression)の内容と一致するように指定された順序で検索されます。
<rule>が一致する場合、オプションの substitution が適用され、変更されたリクエスト文字列が通常の処理のためにサーバーのリクエストパーサーに渡されます。
<ruleset>の末尾に到達したときに一致が成功しなかった場合、リクエストは変更なしでパーサーに渡されます。
OnMatch属性 section-ed952fa55d99422db0ee68a2b9d395d3
デフォルトの動作は、<rule>要素のOnMatch属性で変更できます。 OnMatchはbreak (デフォルト)、continue、またはerrorに設定できます。
カタログ属性の上書き section-3f1e33a65c5346d1b4a69958c61432f3
rule要素は、ルールが正常に一致したときに、対応するカタログ属性を上書きする属性をオプションで定義できます。 複数の一致したルールが同じ属性を設定する場合は、最後のルールが優先されます。 ルールで制御できる属性のリストについては、 ルール 要素を参照してください。
正規表現 section-3f77bb9a265147b38c645f63ab1bad8b
単純な文字列マッチングは、非常に基本的なアプリケーションで機能しますが、ほとんどの場合、正規表現が必要です。 正規表現は業界標準ですが、具体的な実装はインスタンスによって異なります。
package java.util.regexは、画像サービングで使用される特定の正規表現の実装について説明します。
キャプチャされたサブストリング section-066e659406d5403599cd26ae35e80d68
複雑なURLの変更を容易にするために、サブストリングを括弧(。…)で囲むことで、エクスプレッションにサブストリングを取り込むことができます。 キャプチャされたサブストリングには、先頭の括弧の位置に従って、1から始まる番号が付けられます。 キャプチャされたサブストリングは、 $ *n*を使用して置換に挿入できます。ここで、nはキャプチャされたサブストリングのシーケンス番号です。
ルールセットファイルの管理 section-0598a608e4044bb4805fe93ceebe10a9
カタログ属性attribute::RuleSetFileを持つ各画像カタログには、1つのルール セット ファイルを添付できます。 ルールセットファイルはいつでも編集できますが、関連する画像カタログが再ロードされたときにのみ、画像サーバーは変更を認識します。 この再読み込みは、プラットフォームサーバーが起動または再起動されたときに行われ、ファイルのサフィックスが.iniのプライマリカタログファイルが変更または「タッチ」されてファイルの日付が変更されるたびに行われます。
例 section-aa769437d967459299b83a4bf34fe924
例A.画像名に接尾辞「_hg」が付いている場合に、画質設定を増やすルールを定義します。
<rule>
<expression>(?i)_hg$</expression>
<substitution>\?&qlt=95,1&resmode=bicub</substitution>
</rule>
ルール式では、URL文字列の末尾に「_hg」の大文字と小文字を区別しない一致が指定されます。 接尾辞は、指定したクエリ文字列に置き換えられ、画質設定が変更されます。 置換文字列内の?文字は、正規表現の特殊文字であるため、エスケープされることに注意してください。
<substitution><![CDATA[&qlt=95,1&resmode=bicub]]></substitution>
例B. 特定のweb アプリケーションでは、クエリ文字列を許可していません。 末尾のパス要素small、mediumまたはlargeをテンプレートに変換するルールを定義します。このルールでは、パスの残りの部分を画像名として使用します。 例えば、myCat/myImage/smallはmyCat/smallTemplate?src=myCat/myImageに変換されます。
サブストリングを使用して、リクエストを再構築できます。
<rule>
<expression>([^/]+)/(small|medium|large)$</expression>
<substitution>$2Template?src=sample/$1</substitution>
</rule>