如何在IIS上为文本/ html页面使用eTag

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

我有一个位于非公共域上的网站,并通过代理在另一个域上进行交付。我们在内容缓存方面遇到了一些麻烦-这是一个Umbraco网站,如果您直接访问域而不是通过代理访问域,则进行更改会更新页面。

我已获悉,该代理使用响应标头并设置eTag可以解决此问题。研究了这一点,我可以看到IIS默认设置了eTag,并且可以看到它正在处理静态内容,即.js.css文件,如下所示:

enter image description here

但是,如果我访问网站上的页面,例如/uk/products/product,则看不到eTag标头。

这是预期的行为,它应该仅与那些静态内容文件一起使用,还是可以在页面上进行设置以告知代理应该重新缓存?

iis caching umbraco etag iis-10
1个回答
0
投票

ETag HTTP响应标头是资源特定版本的标识符。它使缓存更加有效并节省了带宽,因为如果内容未更改,Web服务器不需要重新发送完整的响应。另外,etags帮助防止资源的同时更新被彼此覆盖(“空中冲突”)。

如果给定URL上的资源发生更改,则必须生成一个新的Etag值。

静态内容在请求之间不会改变。返回到Web浏览器的内容始终相同。静态内容的示例包括HTML,JPG或GIF文件。

IIS自动缓存静态内容(例如HTML页面,图像和样式表),因为这些类型的内容在请求之间不会更改。进行更新时,IIS还会检测到文件的更改,并且IIS会根据需要刷新缓存。

要在iis中启用缓存,您可以使用iis输出缓存功能:

1)打开iis管理器。选择站点。

2)从中间窗格中选择输出缓存功能。

enter image description here

3)从中间窗格中选择编辑功能设置。

enter image description here

4)选中启用缓存并启用内核缓存框,然后单击确定。

enter image description here

如果要将ETag设置为空白,也可以通过在web.config文件中添加以下代码来完成:

<httpProtocol>
    <customHeaders>
        <add name="ETag" value="" />
    </customHeaders>
</httpProtocol>

请参阅下面的这篇文章以获取更多详细信息:

Caching

To use or not to use ETag, that is the question.

Configure IIS Output Caching

© www.soinside.com 2019 - 2024. All rights reserved.