使用 C#, Framework 2.0
读取JS和CSS文件内容的最佳优化方法是什么?
请注意,内容需要同时写出
更清楚的是,在加载页面时,我需要读取所有JS文件的内容并在页面上写出内容。最后,这个页面将作为一个单独的JS文件,并以同样的方式用于CSS文件。
因为我在这里请求读取文件的内容次数。
我正在寻找在访问文件时优化其性能的最佳方法。
答案 0 :(得分:0)
据我所知,这是阅读文件内容的最佳方式,
使用File.ReadAllText(filepath)
获取内容。
filepath = Server.MapPath(jsFile);
if (File.Exists(filepath))
{
contents = File.ReadAllText(filepath);
Response.Write(contents);
}
答案 1 :(得分:0)
取决于项目类型,但您可以查看Bundling & Minification。这样你就不必重新发明轮子了。
答案 2 :(得分: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);
}
}
}
}
答案 3 :(得分:0)
已经有一个ToolkitScriptManager,它将捆绑,缩小和放大将所有javascripts压缩成一个请求。您可以尝试一下这个。
我理解您捆绑,缩小和放大的理由将javascript和CSS压缩成一个文件,但无法理解为什么必须为每个请求完成它。你可以,
使用CodeMaster in his answer(YUICompressor,Closure Compiler,AJAXminifier)建议的现有捆绑和缩小工具之一。这只会将脚本和CSS捆绑一次,也就是在构建时自身捆绑,并使用它来提供所有请求。对我来说,这是捆绑脚本并减少服务器负载的最有效方法,因为它们只是静态文件,而不需要处理它们来捆绑它们。此外,脚本可以被视为静态文件,并在客户端缓存或从CDN加载。
使用Toolkit脚本管理器方法,其中自定义处理程序将查找查询字符串,如果组合存在则查找其缓存,如果不使用Florion's answer构建输出并将其缓存以用于后续调用。通过这种方式,您可以避免频繁的文件读取。