IIS7caching控制
我正在尝试做一些我认为会相当简单的事情。 获取IIS 7告诉客户,他们可以caching我的网站上的所有图像一段时间,比如24小时。
我已经尝试了http://www.galcho.com/Blog/post/2008/02/27/IIS7-How-to-set-cache-control-for-static-content.aspx上的步骤,但无济于事。 我仍然得到请求去服务器与304s被返回。
有没有人有办法做到这一点? 我有一个graphics密集的网站,我的用户每次请求一个页面时都会受到攻击(我的服务器也是如此)。 图像似乎有“caching控制私人,最大年龄= 3600”出现在Firebug中,但浏览器仍然请求他们时,我按F5。
如果你想设置Cache-Control头,IIS7用户界面没有任何东西可以做到这一点,可悲的是。
但是,您可以将此web.config放在您要设置它的文件夹或站点的根目录下:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <staticContent> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> </staticContent> </system.webServer> </configuration>
这将通知客户端在该文件夹和所有子文件夹中caching7天的内容。
你也可以通过appcmd.exe
编辑IIS7configuration数据库,如下所示:
\的Windows \ SYSTEM32 \ INETSRV \ Appcmd.exe的 设置configuration“默认网站/文件夹” -section:system.webServer / staticContent -clientCache.cacheControlMode:UseMaxAge \的Windows \ SYSTEM32 \ INETSRV \ Appcmd.exe的 设置configuration“默认网站/文件夹” -section:system.webServer / staticContent -clientCache.cacheControlMaxAge: “7.00:00:00”
杰夫,这不是真的。
您只需在您的IIS 7pipe理器用户界面(例如图像或事件的默认Web应用程序文件夹)中select一个文件夹,然后单击“HTTP响应标题”。 然后,您必须在右侧窗格中单击“设置通用标题..”并select“过期Web内容”。 您可以通过select“After:”,在文本框中input“24”,然后在combobox中select“Hours”,轻松configuration24小时的最大年龄。
关于web.config条目的第一段是正确的。 我会添加cacheControlCustom属性来设置caching控制头为“公共”或任何需要在这种情况下。
当然,您可以根据需要提供web.config条目(或文件)。
编辑:删除了一个令人困惑的句子:)
我用这个
<staticContent> <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="500.00:00:00" /> </staticContent>
使用公共caching控制标头caching500天的静态内容。
F5 Refresh具有“请重新加载当前HTML及其直接依赖关系”的语义。 因此,您应该期望看到任何由HTML直接引用的imgs,css和js资源也被重新获取。 当然304是一个可以接受的回应,但F5刷新意味着浏览器将提出请求,而不是依靠新的caching内容。
而是尝试简单地导航到其他地方,然后导航回来。
你可以通过在大多数浏览器中按住f5的同时按住ctrl来强制刷新,超过304。
补充埃尔默的回答,因为我的编辑被回滚。
要使用公共caching控制标头caching 365天的静态内容,可以使用以下configuration来configurationIIS
<staticContent> <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" /> </staticContent>
这会翻译成这样的标题:
Cache-Control: public,max-age=31536000
请注意,max-age是以秒为单位的增量,用正数32位整数表示,如RFC 2616部分14.9.3和14.9.4中所述 。 这代表最高值2 ^ 31或2,147,483,648秒(超过68年)。 但是,为了更好地确保客户端和服务器之间的兼容性,我们采用build议的最长365天(一年)。
正如其他答案中提到的,您也可以在您的站点的web.config中使用这些指令来获取所有静态内容。 或者,您也可以将其仅用于特定位置的内容 (在示例中,“cdn”文件夹中的内容的公共caching为30天):
<location path="cdn"> <system.webServer> <staticContent> <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00"/> </staticContent> </system.webServer> </location>
有一个简单的方法:1.使用网站的web.config 2.在“staticContent”部分删除特定的fileExtension并添加mimeMap 3.添加“clientCache”
<configuration> <system.webServer> <urlCompression doStaticCompression="true" doDynamicCompression="true" /> <staticContent> <remove fileExtension=".ipa" /> <remove fileExtension=".apk" /> <mimeMap fileExtension=".ipa" mimeType="application/iphone" /> <mimeMap fileExtension=".apk" mimeType="application/vnd.android.package-archive" /> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="777.00:00:00" /> </staticContent> </system.webServer> </configuration>