SP.NETCORE WEB应用程序以CTRL+F5不会刷新的方式来缓存CSS和其他wwwroot内容。 我通常在IIS上的.NET Framework 4.8上发布了应用程序,并且从未遇到过此ASP.NET Core 5.0应用程序的问题。 在startup.cs中,我有: app.usestaticfiles(); app.

问题描述 投票:0回答:1

让我感到困惑的是,最初是我的

app.UseStaticFiles(); app.UseStaticFiles(new StaticFileOptions() { FileProvider = new PhysicalFileProvider("Fully/Qualified/Path"), RequestPath = new PathString("Relative/Path") });

文件夹在我构建时没有被添加到

wwwroot
文件夹中,但是它仍然能够访问内容。每当我构建时,我确实添加到下面的代码中,将其强加于

bin
目录。
.csproj

当我第一次向我们的云的Azure实例交付时,一切都按预期工作,但是随后的所有交货将使用
bin
中的相同原始的缓存内容,而我对此感到困惑。
要更进一步,我们允许用户将配置文件图片上传到网站。他们上传的第一张图片已正确引用,我可以使用图像浏览到服务器上的物理位置,并说明它是正确的。但是,当我上传新映像时,在服务器上的逻辑删除了旧图像并将其替换为新图像 - 我可以直接在服务器文件系统上验证该图像 - 但是该站点仍将永久显示第一个图像。
	
我同意@Kiron。根据您分享的症状,我们可以知道,这可能是由于缓存,浏览器高速缓存和服务器缓存导致浏览器中的F5和Ctrl+F5都不会加载最新的配置文件图像。因此,在每个静态资源请求中附加版本,或者只是设置
<ItemGroup>
    <Content Update="wwwroot\**\*">
        <CopyToOutputDirectory>PreserveNewset</CopyToOutputDirectory>
    </Content>
</ItemGroup>

wwwroot
将是一个很好的解决方法。
同时,我认为最好的解决方案是仅在需要时才使缓存无效,这使客户端和服务器最多可以使用缓存以减少网络流量并提高性能。例如,如果每个用户的用户配置文件名称相同,我认为SET
<clientCache cacheControlMode="DisableCache" />

也可能应该考虑到。而且,如果您正在处理不需要及时更新静态文件内容的方案,我们还可以设置

<staticContent>

policy="CacheUntilChange"

属性。

请注意,默认情况下,IIS设置将用于整个网站,如果我们只想在特定文件夹中设置静态文件或文件的缓存策略,我们可能会查看thisCase
c# visual-studio asp.net-core iis .net-5
1个回答
0
投票
cacheControlMode="UseMaxAge"

配置。

	
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.