让我感到困惑的是,最初是我的
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设置将用于整个网站,如果我们只想在特定文件夹中设置静态文件或文件的缓存策略,我们可能会查看thisCasecacheControlMode="UseMaxAge"
配置。