我已经覆盖了函数GetVirtualFileSources()如下面的链接表示,但我不压缩文件:https://github.com/ServiceStack/ServiceStack/wiki/HTML,-CSS-and-JavaScript-Minification#minify-dynamic-razor-viewsServiceStack缩小
请有助于理解这个问题。
预先感谢您!
编辑
GetVirtualFileSources()精缩文件,并添加内存文件系统,但是当我提出要求http://myshost/style.css我得到的原始文件。
如何使后端返回最小化的文件。
它requet原料:
GET /content/style.css HTTP/1.1
Host: localhost:61923
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: text/css,*/*;q=0.1
Referer: http://localhost:61923/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ss-pid=1BFULq391BqiGZ4dwj3Z; X-UAId=2; com.cloudloto.lang=ru; ss-id=GaurYdBT7yDywtF3JTiM
EDIT 2
性反应的原料:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/css
Last-Modified: Sat, 27 May 2017 23:22:08 GMT
Accept-Ranges: bytes
Vary: Accept
Server: Microsoft-IIS/10.0
X-Powered-By: ServiceStack/4,58 Win32NT/.NET
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Credentials: true
X-Startup-Errors: 1
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?ZDpcRG9jdW1lbnRzXExvdG9UZWFtXGxvdG9cbG90b1xsb3RvXGNvbnRlbnRcc3R5bGUuY3Nz?=
X-Powered-By: ASP.NET
Date: Sun, 28 May 2017 20:55:01 GMT
Content-Length: 50176
我重视的文件,而不是直接由虚拟路径:
<link href="/content/style.css" rel="stylesheet" />
文件只是最小化,其余我作为文档。
public override List<IVirtualPathProvider> GetVirtualFileSources() {
var existingProviders = base.GetVirtualFileSources();
var memFs = new InMemoryVirtualPathProvider(this);
var fs = existingProviders.First(x => x is FileSystemVirtualPathProvider);
foreach (var file in fs.GetAllMatchingFiles("*.html")) {
var contents = Minifiers.HtmlAdvanced.Compress(file.ReadAllText());
memFs.AddFile(file.VirtualPath, contents);
}
foreach (var file in fs.GetAllMatchingFiles("*.css")
.Where(file => !file.VirtualPath.EndsWith(".min.css"))) //ignore pre-minified .css
{
var contents = Minifiers.Css.Compress(file.ReadAllText());
memFs.AddFile(file.VirtualPath, contents);
}
foreach (var file in fs.GetAllMatchingFiles("*.js")
.Where(file => !file.VirtualPath.EndsWith(".min.js"))) //ignore pre-minified .js
{
try {
var js = file.ReadAllText();
var contents = Minifiers.JavaScript.Compress(js);
memFs.AddFile(file.VirtualPath, contents);
} catch (Exception ex) {
base.OnStartupException(new Exception("JSMin Error {0}: {1}".Fmt(file.VirtualPath, ex.Message)));
}
}
existingProviders.Insert(0, memFs);
return existingProviders;
}
感谢。
您尚未提供任何可帮助确定问题的信息。请始终显示您在问题中使用的impl。首先调试您的自定义GetVirtualFileSources()impl以确认此.css文件正被缩小并添加到Memory Filesystem中,请注意VirtualPath然后直接从Chrome请求该css文件以验证它是否缩小,请显示HTTP请求只有在WebInspector中,源视图可能会自动格式化。 – mythz
还请包括原始HTTP响应头。你的网址也是'http:// myshost/style.css',但你的HTTP请求表明它的请求'/ content/style.css'。请指定未被缩小的确切虚拟路径,并确认是否缩小了确切的文件并将其添加到'GetVirtualFileSources()'中的memFs中。 – mythz
我假设您向我展示的调试输出是针对具有VirtualPath“/content/style.css”的文件?响应也由ServiceStack提供,所以它应该工作,因为ServiceStack使用VirtualFileSource来源静态文件,除非你有一些其他的配置干扰它,但我不能从这里告诉,因为它的工作正常。你可以在我的答案中尝试服务实现,并让我知道返回的文件是缩小版本吗? – mythz