gpt4 book ai didi

asp.net - Web.config 客户端缓存设置不适用于由 HttpContext.RewritePath 重写的路径

转载 作者:行者123 更新时间:2023-12-03 04:43:17 25 4
gpt4 key购买 nike

我们正在使用隐藏内部站点系统。为了隐藏路径,我们使用 HttpContext.RewritePath。还有一个上传照片的系统会生成新名称,并且照片没有机会更改。我们希望对此类照片使用客户端缓存。

网站上的网址,对用户可见:/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg

服务器上 HttpContext.RewritePath 之后的 URL:/_sites/_shared/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg

“/_sites/_shared/files”文件夹中有 web.config,其中包含客户端缓存设置:

<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
</system.webServer>

如果请求“/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg”url,则此设置根本不适用。响应中没有 Cache-Control header 。

如果请求完整网址“/_sites/_shared/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg”并且我们的 HttpContext.RewritePath 跳过它,则缓存设置有效。

但是,如果我使用相同的 web.config 在根目录中创建“/files”文件夹,缓存设置将开始使用原始“/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg” url。

因此 web.config 客户端缓存设置仅适用于最初请求的磁盘路径,不适用于重写的路径。

除了在根目录中创建文件夹之外,还有其他方法可以解决此问题吗?

最佳答案

当您重写 URL 时,您的 web.config 有一个 staticContent 的配置元素,使其动态化,因此您的配置不适用。

可以创建您自己的 HTTP 处理程序并将其映射到您想要的任何文件扩展名。在处理程序的实现中,您可以设置几乎任何 HTTP header ,在您的情况下是缓存控制 header 。 See IHttpHandler interface here and here about configuring it see section 14.9 Cache-Control here

关于asp.net - Web.config 客户端缓存设置不适用于由 HttpContext.RewritePath 重写的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14053315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com