使用剃刀/ MVC3 asp.net生成静态html页面?(Use razor/asp.net mv

2019-06-25 17:46发布

对于一个谟,我已经生成静态html的网页,这是会被远程服务器上发布。

我已经自动将这些文件从C#代码,它从一个SQL Server数据库中提取数据的创建。

数据将不经常改变(每4-5个月),和本网站将高度经常光顾。

因为我觉得asp.net MVC3剃刀synthax非常有效的,我想知道是否有可能使用asp.net MVC3 /剃刀生成这些html的网页?

所以:

  1. 这是一个好主意吗?
  2. 如果是的话,有什么好方法?
  3. 如果你觉得这样做,哪种方式的另一种很好的方式?

感谢您的帮助

编辑

至于答案,我需要一个精确的:我不想/需要使用Web缓存,对于很多的原因(负载(百万页面加载每月),集成(我们在优化的Apache的整合我们的页面,一个网站的另一部分),页数(缓存只会帮助我,如果我有相同的页面了很多时间,但我一定要有〜2500页,所以墨菲定律,但如果我把一个非常高的高速缓存超时,我会经常来生成)。所以,我真的寻找的东西生成HTML页面。

编辑2我刚得到一个新的约束:/这些模板必须本地化。 意思是说我应该有一些等同于以下剃刀代码: @MyLocalizationFile.My.MyValue

编辑3目前,我正在考虑做一个动态的网站,并调用一些HTTP查询就可以了,保存生成的HTML。 但是,是否有办法避免HTTP? 意为模拟HTTP调用,specifiy输出流并称为URL(只有GET调用)。

我们以前的负荷数字被低估了真正的,实际上他们有一点点超过一百万游客每一天,-14万页的加载/天。

Answer 1:

  1. 是的。 即使你可以缓存的结果,HTML页面将永远运行速度更快,更低的服务器资源
  2. 一个好方法是把你的剃须刀的意见转换成文本 ,然后将文本保存为HTML文件。
  3. 另一种方法可以是使用T4模板 ,但我建议剃刀。


Answer 2:

您可以使用剃刀引擎( 的NuGet链接 ,他们的网站 ),这样就可以不使用asp.net MVC创建一个控制台应用程序模板。

我使用它,如下所示:

public string ParseFile<T>(string fileName, T model) {
    var file = File.OpenText(fileName);
    var sb = new StringBuilder();
    string line;
    while ((line = file.ReadLine()) != null)
    {
        // RazorEngine does not recognize the @model line, remove it
        if (!line.StartsWith("@model ", StringComparison.OrdinalIgnoreCase))
            sb.AppendLine(line);
        }
        file.Close();

        // Stuff to make sure we get unescaped-Html back:
        var config = new FluentTemplateServiceConfiguration(
                    c => c.WithEncoding(RazorEngine.Encoding.Raw));

        string result;
        using (var service = new TemplateService(config))
        {
            return service.Parse<T>(sb.ToString(), model);
        }
    }
}


Answer 3:

而不是生成静态的HTML页面,我认为这将是更好的动态生成的网页每一次,但使用缓存以提高性能。

看到这篇文章的缓存与ASP.NET MVC3的详细资料:

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/improving-performance-with-output-caching-cs



Answer 4:

有没有你碰到的任何性能原因将值得的预渲染网页的努力? 我们多少页都在谈论? 做你的控制器采取什么样的参数? 如果香草缓存不能满足您的要求,对我来说,最好的办法是基于磁盘的缓存提供者...

http://www.juliencorioland.net/Archives/en-aspnet-mvc-custom-output-cache-provider



Answer 5:

看看T4模板或类似的模板解决方案



Answer 6:

最后我创造一个正常的asp.net MVC的网站,然后通过使用Web客户端页面上会生成页面。

像这样我可以在网站的预览,我可以享受剃刀+ MVC佣工的全部力量。



Answer 7:

我工作的一个类似的解决方案。 我的网站是在登台环境中正常(ASP.NET + DB + CMS)运行,然后我使用wget抓取并生成静态html页面。 然后,这些静态的HTML页面,其中包括资产上传到亚马逊S3桶。 这样的网站变成完全静态的,没有依赖关系。

我打算每天有一个每日任务是抓取网站的特定页面,使其更快,例如,只抓取/新闻。

我知道你已经找到了解决办法,但也许这个答案可能是帮助他人。



文章来源: Use razor/asp.net mvc3 to generate static html pages?