问题标签 [squishit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2111 浏览

asp.net-mvc - SquishIt 与 MVC 4.0 捆绑器

我有一个 ASP.NET MVC 应用程序,我目前使用 SquishIt 帮助将我的所有 CSS 和 javascript 文件捆绑到一个从网络服务器下载的单个元素中,以便每次点击我的网站。我知道最近MVC 引入了自己的 bundler。有没有人比较过他们两个?在某些情况下,一种比另一种更好吗?还是它们基本相同?使用 MVC 捆绑器,IIS 是否仍需要对站点目录的写入权限?

您可能有的任何和所有想法和评论将不胜感激。

谢谢。

0 投票
1 回答
2165 浏览

iis-7.5 - 如果启用静态压缩,则 IIS 中的 gzip js 不会被压缩

我使用 Squishit 来缩小和捆绑 JS 并压缩捆绑文件我在 IIS 7.5 中启用了选项(启用静态内容压缩)

问题是 Js 没有被压缩,我只是得到了缩小的 js,但是如果我启用动态内容压缩,那么 Js 会被压缩。

现在动态压缩的问题是它不缓存文件,并且在每个请求上都必须进行占用 CPU 时间的压缩。

有人可以帮我弄清楚为什么js在静态内容压缩模式下没有被压缩

这是在客户端发送js的理想方式吗

0 投票
0 回答
102 浏览

javascript - How does SquishIt deal with global variables and functions

I'm not sure if I will use squishIt page by page or use one combined file with all JS in the project. I'm a bit worried that some global variables in my js files will crash into each other. Does squishIt deal with this?

I know that there shouldn't be any global variables. But isn't me that build the project so here I am with alot of JS and with global variables.

Quite same question about functions. What happens if I have the same name of some functions in different JS files and the combined them into one?

Is .ForeRelease() purpose to make it work without changeing debug into false in web.config?

0 投票
2 回答
367 浏览

javascript - SquishIt:如何从 asp:ScriptManager 中缩小 asp.net 默认主题中的 CSS 文件和 Javascript 文件?

我喜欢这个库,但找不到任何关于如何将 SquishIt 与 asp.net 主题和脚本管理器一起使用的信息?只要您在同一母版页上有 css 链接和 js 链接,下面的示例就可以在母版页上使用。您如何将 SquishIt 与存储在 App_Themes/Default/ 文件夹中的 css 文件一起使用?以及 asp:ScriptManager 中的脚本?提前感谢您的帮助。

0 投票
2 回答
640 浏览

.net - 静态资产、CDN 和多服务器环境的 404 问题

我们的生产环境有问题,也许其他人遇到了这个问题并有一个聪明的解决方案。

先决条件:

  • 我们在两台前端服务器前使用负载均衡器。
  • 我们使用 CDN 来交付静态资产,例如 CSS/JS/图像。
  • 我们使用 SquishIt 使用校验和对我们的 JS/CSS 文件进行指纹识别,以提供缓存破坏
  • 我们在应用程序启动时为资产路径添加 CDN 路径。这也是一个 SquishIt 功能 (.WithOutputBaseHref)。示例:/ui/main_465987ecb75.css将呈现为//cdn.host.com/ui/main_465987ecb75.css

部署例程:

  1. 将 server1 从负载平衡器中移除。
  2. 部署到 server1。
  3. 加热它。
  4. 在负载平衡器中包括服务器 1。
  5. 将 server2 从负载平衡器中取出(...并重复步骤 2-4)

这就是失败的地方:

在上面的第 4 步和第 5 步之间,我们让两台服务器都在线了很短的时间。在此期间,server1 可能正在引用 main_46eb48ac968.css,而 server2 可能正在引用 main_987eba4687.css。这将在以下情况下引起麻烦...

用例:

  1. 用户访问该站点并最终访问新部署的服务器 1。
  2. 浏览器将从 CDN 请求 main_46eb48ac968.css。
  3. CDN 从负载均衡器请求该文件,因为它不在其缓存中。
  4. 负载均衡器将 CDN 请求发送到 server2。
  5. Server2 返回 404 page not found 错误,因为新文件仅在服务器 1 上。
  6. 网站看起来像垃圾!

一个简单的解决方法当然是在部署期间不使用 CDN 运行,但由于 CDN url 在应用程序启动期间预先添加到路径中,我们将不得不在生产中重新启动应用程序...:/

想法?

0 投票
1 回答
1406 浏览

asp.net-mvc - 强制 SquishIt 刷新/重新创建缩小文件

我希望将 SquishIt 与我们的 web 应用程序集成。我从本地测试中注意到的是,SquishIt 只生成一次文件。根据其他 SO 答案并阅读 SquishIt 代码,我认为如果 HttpCache 不包含生成的散列键的值,则会发生文件生成。

如果没有重新启动应用程序,或者没有清除 HttpCache,如果我删除了生成的缩小文件,那么 SquishIt 不会重新创建文件。

如果文件不存在,有什么方法可以强制 SquishIt 重新创建文件?

早些时候我们使用 RequestReduce,我们注意到如果只编辑 css/js 文件(即,未编辑 web.config 并且未重新启动应用程序),它并不总是能够获取 css/js 更改。为确保获取更改,我们始终在部署时删除所有生成的文件。

  1. SquishIt 是否总是检测到更改的代码,即使 web.config 没有被修改,应用程序没有重新启动并且 HttpCache 没有被清除?

    [BundleCache.Add] ( https://github.com/jetheredge/SquishIt/blob/master/SquishIt.Framework/BundleCache.cs#L40-54 ) 方法的代码有助于回答这个问题

  2. 我可以通过简单地删除生成的文件来强制 SquishIt 生成文件吗?

    在考虑了我需要处理的场景之后,这是一个错误的问题。

编辑:

  1. 这些生成的文件发送到客户端的缓存头是什么?

我的情况如下。我从默认的 JS minifier 切换到 JsMinMinifier。删除文件(RenderOnlyIfOutputFileIsMissing设置)并重新启动应用程序后,生成了缩小文件。但是,它们与以前的文件具有相同的名称(我错误地认为它会具有不同的名称)。

刷新我的浏览器显示新生成的文件是由服务器发送的。这怎么发生的?如果资产上设置了长过期缓存标头,则浏览器不应该从服务器请求新文件。(检查 Firebug 中的资产,我无法理解缓存策略。对我来说,它看起来像是设置为缓存几分钟)。

编辑2:

我的收获是,没有必要删除生成的文件来导致重新生成。如果相应的源文件发生变化,SquishIt 将生成一个适当的文件。

0 投票
2 回答
907 浏览

css - 使用 SquishIt(支持动态 LESS 内容)在单独的 less 文件中引用变量?

我们在 MVC4 中为我们的项目使用引导程序。到目前为止,我们在主布局页面中引用了 bootstrap.less 文件,它运行良好。但是,出现了一个新要求,要求我们为每个部门页面定制外观(每个部门都有自己的布局,使用主布局)

bootstrap.less 有这样的结构:

@import variables.less // 定义所有变量

@import others // 所有导入,如 mixins.less、reset.less 等

因为我们需要注入我们的变量覆盖,我们创建了另一个更少的文件:

bootstrap-without-variables.less //包含所有没有来自 bootstrap.less 的 variables.less 的导入

这种分离的原因是注入我们的变量覆盖,以便我们可以自定义页面的引导样式。

我们正在使用SquishIt将较少的文件捆绑到一个包中。

这是捆绑包:

这根本不起作用。如果我删除 variables.less 并在 bootstrap-without-variables.less 中引用它(现在变得类似于 bootstrap.less),它工作得非常好。

我认为,问题在于每个文件在将它们组合在一起之前都经过独立评估并转换为 css。

有没有办法告诉捆绑器首先将文件捆绑成一个,然后评估并转换为 css 或更好的解决方案?

0 投票
1 回答
454 浏览

javascript - 在 body 元素的末尾使用 squishit 并渲染外部 minifiedjs

我的应用程序中有母版页和子页。在运行时,我确定要包含在母版页预初始化方法中的 js 和 css,并使用 squish(bundlecss.AsCached 和 bundlecss.Render)方法渲染 js 和 css。在母版页头控件中,使用 Bundle.Css().RenderNamed 方法包含该文件。

现在我的要求是在 body 元素的末尾包含外部 js 文件,以便更快地呈现网页。当我在 body 元素的末尾调用 Bundle.Css().RenderNamed 时,页面中不包含 js 文件。

使用 squish 框架时,是否无法指定缩小的 js 应包含在页面 html 中的位置?

提前致谢。梵天

0 投票
1 回答
204 浏览

asp.net-mvc-2 - 如何删除在 js 和 css 文件中更改创建的旧文件,而无需每次使用 SquishIt 框架手动清理它们

我正在研究 asp.net mvc2 项目。由于某些限制,我无法将代码迁移到 asp.net mvc4 版本,因此我无法使用捆绑和放大功能来捆绑和缩小 js 和 css 文件。我使用 SquishIt 框架来解决这个问题。谁能帮助我知道除了 SquishIt 框架之外还有其他好的选择来完成这项任务。

我使用以下 url 来实现 SquishIt 框架: http: //www.codethinked.com/SquishIt-The-Friendly-ASPNET-JavaScript-and-CSS-Squisher

谁能帮我知道如何删除通过更改 js 和 css 文件创建的旧文件,而无需每次都手动清理它们。

谢谢和问候, 桑托什·库马尔·帕特罗

0 投票
1 回答
680 浏览

less - Squishit.Less 什么都不做

我使用包管理器安装 Squishit.Less 0.9.3,我有两个文件

  1. style.less -@import "test.less";
  2. test.less - body{background-color: pink;}.

在我的页面中,我有:

但我得到的输出是:@import"test.less";- 由于某种原因,较少的处理器没有尝试导入?

我试过ProcessImports了,但这没有任何区别。