【问题标题】:How to set cache headers for files accessed directly如何为直接访问的文件设置缓存头
【发布时间】:2015-07-26 20:13:36
【问题描述】:

我有一个向 Twilio 提供 WAV 文件的服务器,但在为这些文件设置缓存时遇到了一些问题。 我的问题是文件有不同的到期日期,有些不应该缓存,有些应该缓存一天,有些应该缓存一个月等等。 目前我可以使用 IIS 输出缓存设置为不缓存任何文件,但是现在我需要设置一些缓存。 基本上 Twilio 请求 WAV 文件直接调用它,例如,http://mywebsite.com/mysoundwithoutcache.wav 以及 http://mywebsite.com/mysoundwith1daycache.wav 等等。

我的问题是如何将此标头添加到直接调用的那些文件中?

我正在使用 IIS 7 和 ASP.NET

提前致谢

【问题讨论】:

    标签: asp.net caching iis iis-7 browser-cache


    【解决方案1】:

    仅将设置应用于特定文件的方法是使用位置标签,在您的 web.config 中添加一个新节点:

    <location path="cache_me.wav">
    <system.webServer>
        <caching>
            <profiles>
                <add extension="*.wav" policy="CacheForTimePeriod" kernelCachePolicy="DontCache" duration="01:00:00" />
            </profiles>
        </caching>        
    </system.webServer>
    </location>
    

    不幸的是,我认为您不能在路径属性中使用通配符,因此您可以为每个文件选择这些部分之一。如果将所有要缓存的文件放在单独的文件夹中更容易,那么您可以使用单个位置节点。

    说了这么多,您不必担心wave文件的输出缓存,静态文件由IIS自动缓存。

    【讨论】:

    • 我会试试这个,我确实有很多文件,但是用所有文件做一个大的 xml 比在这个阶段尝试更改应用程序更容易。我对你所说的关于 IIS 自动缓存 wav 文件的内容感到困惑。我的问题是,如果我在上传新消息时没有将缓存设置为 DontCache,Twilio 仍然使用旧版本的文件,我必须设置为无缓存才能解决问题
    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 2012-12-28
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2011-02-01
    • 2019-04-08
    • 2019-01-14
    相关资源
    最近更新 更多