真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

1個文件輕松搞定Asp.netcore3.1動態(tài)頁面轉(zhuǎn)靜態(tài)頁面的示例-創(chuàng)新互聯(lián)

這篇文章主要介紹1個文件輕松搞定Asp.net core 3.1動態(tài)頁面轉(zhuǎn)靜態(tài)頁面的示例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計、成都網(wǎng)站制作、網(wǎng)站設(shè)計、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設(shè)計師團隊。

前言

最近一個Asp.net core項目需要靜態(tài)化頁面,百度查找了一下,沒有發(fā)現(xiàn)合適的。原因如下

  1. 配置麻煩。

  2. 類庫引用了第三方類,修改起來麻煩。

  3. 有只支持MVC,不支持PageModel。

  4. 繼承ActionFilterAttribute類,只重寫了OnActionExecutionAsync,看似靜態(tài)化了,其實運行時該查數(shù)據(jù)庫還是查數(shù)據(jù)庫,沒有真正靜態(tài)化。

  5. 缺少靈活性,沒有在線更新靜態(tài)文件方法,不能測試查看實時頁面,沒有進行Html壓縮,沒有使用gzip、br壓縮文件.


于是我開始了頁面靜態(tài)化項目,只過幾分鐘就遇到了Asp.net core的一個大坑——Response.Body是一個只寫Stream,無法讀取返回的信息。

代碼如下:

var filePath = GetOutputFilePath(context);
      var response = context.HttpContext.Response;
      if (!response.Body.CanRead || !response.Body.CanSeek) {
        using (var ms = new MemoryStream()) {
          var old = response.Body;
          response.Body = ms;

          await base.OnResultExecutionAsync(context, next);

          if (response.StatusCode == 200) {
            await SaveHtmlResult(response.Body, filePath);
          }
          ms.Position = 0;
          await ms.CopyToAsync(old);
          response.Body = old;
        }
      } else {
        await base.OnResultExecutionAsync(context, next);
        var old = response.Body.Position;
        if (response.StatusCode == 200) {
          await SaveHtmlResult(response.Body, filePath);
        }
        response.Body.Position = old;
      }

解決了這個大坑后,就沒遇過什么問題了。

項目地址:https://github.com/toolgood/StaticPage

快速入門

1、將HtmlStaticFileAttribute.cs放到項目下;

2、添加[HtmlStaticFile]

2.1、在控制器文件中,在類名或Action方法上添加[HtmlStaticFile]。

using Microsoft.AspNetCore.Mvc;

namespace StaticPage.Mvc.Controllers
{
  public class HomeController : Controller
  {

    [HtmlStaticFile]
    [HttpGet("/Count")]
    public IActionResult Count()
    {
      return View();
    }

  }
}

2.2或 在PageModel文件中,在類名上添加[HtmlStaticFile]。

注:PageModel文件中,在方法上添加[HtmlStaticFile]是無效的。

using Microsoft.AspNetCore.Mvc;

namespace StaticPage.Pages
{
  [HtmlStaticFile]
  public class CountModel : PageModel
  {
    public void OnGet()
    {
    }
  }
}

其他配置

設(shè)置緩存文件夾

HtmlStaticFileAttribute.OutputFolder = @"D:\html";

使用壓縮

HtmlStaticFileAttribute.UseBrCompress = true;
HtmlStaticFileAttribute.UseGzipCompress = true;

設(shè)置頁面緩存時間

HtmlStaticFileAttribute.ExpireMinutes = 3;

使用開發(fā)模式 ,在開發(fā)模式,頁面不會被緩存,便于開發(fā)調(diào)試。

HtmlStaticFileAttribute.IsDevelopmentMode = true;

支持Url參數(shù),不推薦使用

HtmlStaticFileAttribute.UseQueryString = true;

使用Html壓縮,推薦使用WebMarkupMin來壓縮Html。

HtmlStaticFileAttribute.MiniFunc += (string html) => {
        var js = new NUglifyJsMinifier();
        var css = new NUglifyCssMinifier();

        XhtmlMinifier htmlMinifier = new XhtmlMinifier(null, css, js, null);
        var result = htmlMinifier.Minify(html);
        if (result.Errors.Count == 0) {
          return result.MinifiedContent;
        }
        return html;
      };

更新文件緩存

在Url地址后面添加參數(shù)“update”,訪問一下就可以生成新的靜態(tài)頁面。

如:

   https://localhost:44304/Count?__update__

測試頁面,不更新文件緩存

在Url地址后面添加參數(shù)“test”,訪問一下就可以生成新的靜態(tài)頁面。

如:

https://localhost:44304/Count?__test__

項目地址:https://github.com/toolgood/StaticPage

以上是“1個文件輕松搞定Asp.net core 3.1動態(tài)頁面轉(zhuǎn)靜態(tài)頁面的示例”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


當前標題:1個文件輕松搞定Asp.netcore3.1動態(tài)頁面轉(zhuǎn)靜態(tài)頁面的示例-創(chuàng)新互聯(lián)
URL標題:http://weahome.cn/article/djidid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部