我想在浏览器中缓存一个特定的 aspx 页面。我有正当理由将其作为 ASPX 页面,我需要在浏览器上进行缓存。
现在,在服务器缓存上,我可以通过参数改变缓存。浏览器在缓存页面响应时是否也考虑参数?
例如,以下两个响应是否会在浏览器上保存为两个不同的缓存项? http://mypage.com/page.aspx?Param=1 和 http://mypage.com/page.aspx?Param=2
我想在浏览器中缓存一个特定的 aspx 页面。我有正当理由将其作为 ASPX 页面,我需要在浏览器上进行缓存。
现在,在服务器缓存上,我可以通过参数改变缓存。浏览器在缓存页面响应时是否也考虑参数?
例如,以下两个响应是否会在浏览器上保存为两个不同的缓存项? http://mypage.com/page.aspx?Param=1 和 http://mypage.com/page.aspx?Param=2
是的,浏览器会将这些 url 视为 2 个不同的资源,因此它将分别缓存它们(以防缓存标头指示这样做)。
您可以使用Fiddler轻松测试它。
编辑 2: 如何在缓存资源时指示浏览器忽略 GET 参数描述了类似的问题,如果您想将这两个页面缓存为同一个页面,可能会很困难。如果您希望它们不同,则应设置为默认行为,但请确保您的
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="CACHE">
标签设置为明确告诉浏览器执行此操作。
原答案:
如果你愿意,你可以选择。例如,如果您希望它们以不同的方式缓存,请使用 varyByParam="param" 设置输出缓存:
<%@ OutputCache Duration="60" VaryByParam="Param" %>
如果您不使用参数变化选项,这两个页面将缓存相同。如果你想改变多个参数,用分号分隔它们。如果您想根据所有参数进行更改,请使用 * 通配符:
<%@ OutputCache Duration="60" VaryByParam="*" %>
有关输出缓存的更多信息:http: //msdn.microsoft.com/en-us/library/y96218s9.aspx
编辑:只需重新阅读您的问题。这将导致服务器端缓存,而不是浏览器。