我希望将 SquishIt 与我们的 web 应用程序集成。我从本地测试中注意到的是,SquishIt 只生成一次文件。根据其他 SO 答案并阅读 SquishIt 代码,我认为如果 HttpCache 不包含生成的散列键的值,则会发生文件生成。
如果没有重新启动应用程序,或者没有清除 HttpCache,如果我删除了生成的缩小文件,那么 SquishIt 不会重新创建文件。
如果文件不存在,有什么方法可以强制 SquishIt 重新创建文件?
早些时候我们使用 RequestReduce,我们注意到如果只编辑 css/js 文件(即,未编辑 web.config 并且未重新启动应用程序),它并不总是能够获取 css/js 更改。为确保获取更改,我们始终在部署时删除所有生成的文件。
SquishIt 是否总是检测到更改的代码,即使 web.config 没有被修改,应用程序没有重新启动并且 HttpCache 没有被清除?
[BundleCache.Add] ( https://github.com/jetheredge/SquishIt/blob/master/SquishIt.Framework/BundleCache.cs#L40-54 ) 方法的代码有助于回答这个问题
我可以通过简单地删除生成的文件来强制 SquishIt 生成文件吗?
在考虑了我需要处理的场景之后,这是一个错误的问题。
编辑:
- 这些生成的文件发送到客户端的缓存头是什么?
我的情况如下。我从默认的 JS minifier 切换到 JsMinMinifier。删除文件(RenderOnlyIfOutputFileIsMissing
设置)并重新启动应用程序后,生成了缩小文件。但是,它们与以前的文件具有相同的名称(我错误地认为它会具有不同的名称)。
刷新我的浏览器显示新生成的文件是由服务器发送的。这怎么发生的?如果资产上设置了长过期缓存标头,则浏览器不应该从服务器请求新文件。(检查 Firebug 中的资产,我无法理解缓存策略。对我来说,它看起来像是设置为缓存几分钟)。
编辑2:
我的收获是,没有必要删除生成的文件来导致重新生成。如果相应的源文件发生变化,SquishIt 将生成一个适当的文件。