1

現在、私はCassetteをSitecoreプロジェクトに入れようとしていますが、それはただの面で平らになっています。私はすでにプロジェクトにdotLessを持っていますが、バンドル中のキャッシュバスティングのためのより確実なソリューションが必要です。

通常の.Net4プロジェクトでCassetteを使用できますが、SitecoreプロジェクトでCassetteを機能させることができません。(Ed)実際にバンドルを作成することができず(チェック済み/_cassette)、ページに何も出力されませんでした。私たちにとって、プロジェクトはビルドされていませんが、代わりにCodeFileを使用しており、それが問題の一部であったかどうかはわかりません。一般的に、No bundle with path 'xxx'何を試しても例外が発生し続けました。CoffeeScriptをソリューションに織り込んでもかまわないので、これは残念なことです。

javascriptを圧縮/縮小し、SitecoreでdotLessファイルをレンダリングできるソリューションはありますか?

4

2 に答える 2

3

Sitecoreクライアントインターフェイスのいずれかで動作しているときにCassetteからの空の応答ストリームは、CassetteがrewriteHtml実装する機能が原因で発生しています。

デフォルトでは、CassetteはページのHTML出力をバッファリングして再書き込みします。これにより、タグがレンダリングされた後、部分ビューで<link>スタイルシートを参照するタグを挿入できます。書き換え機能は、イベントハンドラー<head>として呼び出されます。PostRequestHandlerExecute

表示されている空の応答ストリームは、再書き込みされた出力ストリームがフラッシュされていない結果です。この問題の修正は、Cassette.AspNet.PlaceholderReplacingResponseFilterクラスでCloseが呼び出されたときに出力ストリームをフラッシュすることです。これを以下に示します。

    void WriteUncompressedOutput()
    {
        var output = GetOutputWithPlaceholdersReplaced(bufferStream);
        var outputBytes = outputEncoding.GetBytes(output);
        if (outputBytes.Length > 0)
        {
            outputStream.Write(outputBytes, 0, outputBytes.Length);
            outputStream.Flush();
        }
    }

書き換え機能が必要ない場合は、回避策を利用できます。web.config:のいずれかで、CassetteHTML書き換え機能を無効にするだけです。

<configuration>
    <configSections>
        ....
        <section name="cassette" type="Cassette.CassetteConfigurationSection, Cassette"/>
    </configSections>
    <cassette rewriteHtml="false"/>

またはコードで:

public class CassetteSettingsConfiguration : IConfiguration<CassetteSettings>
{
    public void Configure(CassetteSettings configurable)
    {
        configurable.IsHtmlRewritingEnabled = false;
    }
}

この情報は、SitecoreでのCassetteの使用に関する私のブログ投稿に含まれています。

于 2013-04-13T15:35:48.567 に答える
0

SquishItJavaScriptファイルを一緒にうまく再生する以外に、かなり簡単に、面倒なことなく作業できるようになりました。

于 2012-06-20T12:38:42.487 に答える