【发布时间】:2014-05-27 18:20:51
【问题描述】:
我正在开发一个需要以只读格式在文本文件中显示信息的 Web 应用程序。我已经使用字符串生成器和文字控件(已发布代码中的 litProgram)完成了此操作。我读取了文本文件,使用字符串生成器将其内容复制到一个新字符串中,然后将 Literal 控件的 Text 属性设置为我的新字符串。这是后面代码中的函数:
protected void viewCNC()
{
// Clear any existing program text
litProgram.Text = "";
// Get Workcenter name for folder navigation
string workcenter = gvDispatchList.SelectedRow.Cells[this.Master.getColumnID("WorkCenter", gvDispatchList)].Text;
// Get program name from program list
if (gvPrograms.SelectedRow != null)
{
string program = gvPrograms.SelectedRow.Cells[0].Text;
// Change label
lblProgramName.Text = program;
// Read file
using (StreamReader sr = new StreamReader("\\\\server\\CNCPrograms\\" + workcenter + "\\MasterPrograms\\" + program))
{
StringBuilder sb = new StringBuilder();
while (!sr.EndOfStream)
{
sb.Append(sr.ReadLine());
sb.Append("<br/>");
}
litProgram.Text = sb.ToString();
upnlViewCNC.Update();
modalViewCNC.Show();
}
}
else
{
MessageBox msg = new MessageBox();
msg.Alert("Please select a program.");
}
}
这种方法效果很好,但是当我尝试从非常大的文件(超过 1000 KB)中显示文本时出现问题。随着文字文本的更新,有一个非常明显的滞后。我已经将减速追溯到“litProgram.Text = sb.ToString();”行。
我的问题是,这是一种很好的使用方法吗?我有什么方法可以加快速度吗?在用户等待应用完成将文本复制到文字时,延迟最多 2-3 秒是不可取的。
【问题讨论】:
-
string myString = sr.ReadToEnd().Replace(Environment.NewLine, "<br />"); -
很可能是由于将近 1MB 的数据传输回客户端造成的。当浏览器一次性渲染大型 html 简介时,也可能会有延迟。一种优化是在服务器上缓存文本文件的内容,而不是每次都检索它