2012-06-19 48 views
1

目前,我一直在试图把录像带到我们Sitecore的项目,它只是落空它的脸。我已经在项目中使用了dotLess,但想要在绑定时获得缓存清除的更稳固的解决方案。Sitecore的使用Javascript压缩/缩小和LESS编译

我可以在一个正常的.NET4项目中使用磁带,但就是不能让它在我们Sitecore的项目。 (编辑)我们无法得到它实际上建立任何类型的捆绑(检查/_cassette),并没有输出任何东西到页面。对我们来说,这个项目并不是建立的,而是使用CodeFile,我不确定这是否是问题的一部分。总的来说,无论我们尝试了什么,我们都会遇到异常。这是一个无赖,因为我真的不介意将CoffeeScript编入解决方案。

是否有压缩/ minifies JavaScript和可渲染Sitecore的带点文件的解决方案?

+0

Cassette怎么没有和Sitecore一起工作? –

+0

@StephenPope增加了问题的细节。 – al3xnull

+0

我们获得了Cassette与Sitecore一起工作,但是执行此操作的步骤尚未记录。其中一个主要问题是如果请求有与之关联的路由数据('_cassette'),则中止请求管道,这需要定制[小型]处理器。 – kamranicus

回答

0

我们最终得到SquishIt工作相当容易,没有太多的麻烦,除了让JavaScript文件一起玩。在任何Sitecore的客户端接口的正在由它实现rewriteHtml功能引起工作时

3

空响应从纸盒流。

默认纸盒会缓冲和重写网页HTML输出。这允许部分视图在已呈现<head>标记后插入<link>引用样式表的标签。重写功能被调用为PostRequestHandlerExecute事件处理程序。

空响应流,你所看到的是作为已被重写没有被刷新输出流的结果。针对此问题的解决方法是刷新输出流时关闭的呼吁Cassette.AspNet.PlaceholderReplacingResponseFilter类,这是如下图所示:

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

如果您不需要重写功能的解决办法,现在是可用的。只是禁用纸盒HTML重写功能,无论是在web.config

<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; 
    } 
} 

该信息包括在我的博客文章using Cassette with Sitecore

+0

谢谢!这让我非常伤心。我在sitecore中搜索空白屏幕或在sitecore中死亡的白屏,但​​没有运气。最后把它缩小到Cassette,这个帖子救了我。希望您的拉动请求很快会融入到主要的回购协议中。 –