While what you've described is indeed a possible strategy to speed up things, OutputCache is a viable alternative.
The outputcache lives in the memory for a finite time. Also note that if you write a HTML file there will be a write operation involved. You may also need a mechanism to refresh the HTML file you've written.
If you want to stick with your own strategy (read a file from the server) you could do that easily.
In the Controller you could check if your file exists like this.
public ContentResult MyPage()
{
if(System.IO.File.Exists(Server.MapPath("myFile.html"))
{
return Content(System.File.ReadAllText("myFile.html");
}
else
{
GenerateMyFile(); //This function generates the file
return Content(System.File.ReadAllText("myFile.html");
}
}