-1

使用C#, Framework 2.0

读取 JS 和 CSS 文件内容的最佳优化方式是什么?

注意内容需要同时写出

编辑:

更清楚地说,在加载页面时,我需要读取所有 JS 文件的内容并在页面上写出内容。最后,这个页面将作为一个单独的 JS 文件和 CSS 文件以同样的方式运行。

因为这里我要求多次读取文件的内容。

我正在寻找在访问文件时优化其性能的最佳方法。

4

4 回答 4

0

据我所知,这是读取文件内容的最佳方式,

用于File.ReadAllText(filepath)获取它的内容。

filepath = Server.MapPath(jsFile);
if (File.Exists(filepath))
{
   contents = File.ReadAllText(filepath);
   Response.Write(contents);
}
于 2012-07-05T09:02:11.957 回答
0

已经有一个 ToolkitScriptManager,它将捆绑、缩小和压缩所有 javascript 到一个请求中。你可以试着看看这个。

我理解您将 javascript 和 CSS 捆绑、缩小和压缩到一个文件中的原因,但无法理解为什么必须为每个请求完成它。你也可以,

  1. 使用CodeMaster 在他的回答中建议的现有捆绑和缩小工具之一(YUICompressor、Closure Compiler、AJAXminifier)。这只会将脚本和 CSS 捆绑一次,这也是在构建时本身,并使用它来服务所有请求。对我来说,这是捆绑脚本并减少服务器负载的最有效方法,因为它们只是静态文件,捆绑它们不需要处理。此外,脚本可以被视为静态文件并缓存在客户端或从 CDN 加载。

  2. 使用 Toolkit Script Manager 方法,自定义处理程序将在其中查找查询字符串,如果存在组合,则在其缓存中查找,如果不存在,则使用Florion 的答案构建输出并将其缓存以供后续调用。通过这种方式,您可以避免频繁的文件读取。

于 2012-07-06T04:46:40.547 回答
0

目标是什么?扫描输出?这是一个编码安全的版本(即:尽可能进行编码翻译)

    void ConcatenateAllSafe(StreamWriter output, params string[] files)
    {
        foreach (var f in files)
        {
            using(StreamReader rd = new StreamReader(f))
            {
                string line = null;
                while (null != (line = rd.ReadLine()))
                {
                    output.WriteLine(line);
                }
            }
        }
    }

    // This version will assume everything is sharing the same encoding
    void ConcatenateAllUnsafe(Stream output, params string[] files)
    {
        var data = new byte[1024 * 64];//64k should be enough for anyone

        foreach (string f in files)
        {
            using (Stream inStream = new FileStream(f, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                for (int offset = 0,
                         read; 0 != (read = inStream.Read(data, offset, data.Length)); offset += read)
                {
                    output.Write(data, 0, read);
                }
            }
        }
    }
于 2012-07-05T09:22:26.750 回答
0

取决于项目的类型,但您可以查看Bundling & Minification。这样你就不必重新发明轮子了。

于 2012-07-05T09:15:28.690 回答