次のコンポーネントを使用して多言語サイトを開発しています。
MBCompresion-そのライブラリのソースファイルを使用して、JS/CSSの縮小と圧縮を統合しました。さらに、ページ上のすべてのJS / CSSを1つのリクエスト(JS用に1つ、CSS用に1つ)に結合するHttpFilterを作成しました。キャッシュ戦略としてMBCompressionのFileSystemStorageを使用しています。
jQueryUI Datepicker-ローカリゼーションファイルを含めて、そのまま使用します。
jQGrid-同じように、ローカリゼーションファイルを含めてそのまま使用します。
それはすべて正常に機能します...ASPXページの「script」タグは単一の「script」タグに結合されます。jslib.axd HttpHandlerにリクエストを送信し、ハンドラーはすべてのJSファイルを1つのファイルに結合し、GZipで圧縮し、圧縮ファイルをFileSystemに保存してから、そのファイルをクライアントに送信します。
問題:唯一の問題は、サイトが中国語に切り替わったときです。サイトが中国語で、GZip圧縮とFileSystemキャッシュを使用している場合、クライアントに到着するJavaScriptは無効です。「UncaughtSyntaxError:UnexpectedtokenILLEGAL」などの奇妙な文字やエラーが含まれています。いくつかの調査の結果、jqGridとjQueryDatepickerの中国語のローカライズされたファイルでのみ問題が見つかりました。
クライアントに到着するjavascriptの例(ほんの数行)は次のとおりです。
jQuery(function($){$.datepicker.regional['zh']={closeText:'s�',prevText:'<
Uncaught SyntaxError: Unexpected token ILLEGAL
',nextText:'>',currentText:'�)',monthNames:['','�',' ','�','�','m','','k',']','A','A','A�'],monthNamesShort:['','�',' ','�','�','m','','k',']','A','A','A�'],dayNames:['�','','�',' ','�','�','m'],dayNamesShort:['h�','h','h�','h ','h�','h�','hm'],dayNamesMin:['�','','�',' ','�','�','m'],weekHeader:'h',dateFormat:'yy-mm-dd',firstDay:1,isRTL:false,showMonthAfterYear:true,yearSuffix:'t'};$.datepicker.setDefaults($.datepicker.regional['zh']);});
GZip圧縮を無効にすると、everithingは正常に機能しました。キャッシュをOutputCacheに変更すると、中国語でFileSystemCacheを使用してGZipを使用する場合、everithingが機能します...唯一の問題です。他のすべての言語(日本系言語も含む)は完璧に機能します。
何が問題になるのかさえわかりません。エンコーディングなどに関連しているのではないかと思いましたが、圧縮されたJSをファイルに書き込むようなパラメーターやプロパティがFileStreamに表示されません。
その問題を解決するのを手伝ってください。
ありがとう。