簡體   English   中英

如何強制更新/防止在 Linux 上運行並由 nginx 反向代理服務器托管的 .NET Core Web 應用程序的 HTML 緩存

[英]How to force updates / prevent HTML caching of .NET Core web application running on Linux and hosted by an nginx reverse proxy server

我使用 .NET Core 5.0 MVC 用 C# 編寫了我的 Web 應用程序。 我在控制器中使用路由來將 URLS 映射到使用 Razor 的視圖並提供服務。 我使用 .Net 核心運行時在 Linux 服務器上運行該應用程序,然后使用 nginx 反向代理服務器托管該應用程序。

我經常對我的網站進行更改,它依賴於從我的數據庫中實時拉取數據來獲取最新的統計數據以顯示給用戶,因此我提供的視圖是最新的至關重要。


問題:出於某種原因,我可以發布和部署新代碼,它會在我的桌面上正常顯示,但不能在移動設備或我朋友的桌面上顯示(有時會,有時不會)。 如果我將 google.com/test 之類的 URL 稍微更改為 google.com/Test,我可以看到新的變化。 我的路徑也不區分大小寫,但我所有的 SEO/google 鏈接都有小寫/緩存版本。


經過研究,我得出結論,不同的瀏覽器/應用程序正在緩存我的 HTML/JS/CSS,而不是從服務器獲取最新的。

我嘗試了以下方法

  • 安裝 NuGet 包“Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation”並調用

     services.AddControllersWithViews().AddRazorRuntimeCompilation();

在我的 ConfigureServices 方法中。

  • 將以下內容添加到我的布局文件中:

     <meta http-equiv="cache-control" content="max-age=0" /> <meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"> <meta http-equiv="expires" content="-1" /> <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> <meta http-equiv="pragma" content="no-cache" />
  • 將此添加到返回視圖的控制器操作中:

     [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
  • 我正在使用 nginx 反向代理服務器托管我的 Web 應用程序服務器,並且我嘗試添加一些我在網上看到的內容以防止沒有運氣的緩存。

我的移動設備(運行 Chrome 的 Android)沒有任何效果。

有沒有其他人遇到過這個或可能知道解決方案?

您是否嘗試過使用 ASP.NET 提供的asp-append-version

它可以以這種方式用於 css/js

        <link rel="stylesheet" href="~/css/site.css" asp-append-version="true"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM