1

我刚刚创建了用于优化文件大小的 Javascript 和 CSS 处理程序,使用 YUI Compressor 和 GZip 或 Deflate 压缩器取决于请求标头。以下代码用于通过 GZipStream 类压缩文件。但我发现它可以将 JQuery 1.3.2(YUI 压缩)文件大小从58KB -> 54KB减少。

public void GZipCompressFile(string filePath, string compressedFilePath)
{
   FileStream sourceFile = File.OpenRead(filePath);
   FileStream destFile = File.Create(compressedFilePath);

   using (GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress))
   {
      int theByte = sourceFile.ReadByte();
      while (theByte != -1)
      {
         theByte = sourceFile.ReadByte();
      }
   }

   sourceFile.Dispose();
   destFile.Dispose();
}

另一方面,我使用 gz 格式(超压缩模式)使用 7-Zip 压缩文件。压缩文件的大小仅为19.3 KB。但是,我不能使用 7-Zip 作为默认压缩器。因为它无法使用 Deflate 压缩器方法压缩文件。

你有任何组件来压缩 GZip 和 Deflate 文件类型的文件吗?或者您对编辑我的 GZipCompressFile 方法有任何想法吗?此外,是否所有新浏览器(IE8、FF3.5、Opera 9.6、Safari 4)都支持压缩方法(GZip 和 Deflate)?

4

3 回答 3

0

是的,内置压缩并不是那么好。尝试使用Ionic.zip库,它可以为您提供更好的压缩比。

于 2009-07-01T07:37:33.797 回答
0

请查看Helicon Ape mod_gzip模块。这里有一些关于如何使用它的指南

于 2009-07-14T13:46:54.783 回答
0

尝试使用 zlib.net ( http://www.componentace.com/zlib_.NET.htm ) 进行压缩。

我有一个内容长度为 14588 的未压缩页面。

.net 的原生 gzip 降低到 2909 zlib.net 的 gzip 降低到 2590

.net 的原生 deflate 将其降至 2891 zlib.net 的 deflate 使用“最佳压缩”设置将其降至 2559,使用默认设置将其降至 2583。

它也很容易:

using zlib;
    Response.Filter = new ZOutputStream(Response.Filter, zlib.zlibConst.Z_BEST_COMPRESSION);
    Response.AppendHeader("Content-Encoding", "deflate");
于 2009-10-15T16:57:47.020 回答