在我的网站上,我使用查询字符串参数将信息传递给 Javascript,但返回的实际 html 与查询字符串无关(它只是由 Javascript 动态填充的模板)。
有没有简单的方法可以独立于查询字符串参数来缓存页面?我的一个想法是使用服务工作者从请求中删除查询字符串,但我想知道是否有任何更简单、更干净的方法。
我正在尝试编写一个类似curl 的工具,它演示了各种HTTP 缓存标头对dot net 的HttpClient 类的影响。
在我最初的尝试中,我将该工具指向我的一个内部 Web 服务,该服务未在响应中指定任何缓存信息并检查响应的标头。
我希望看到请求每次都重新发送并在服务器上执行,每次返回一组新的但相同的内容(出于本测试的目的,内容在服务器上是静态的)。但是,相反,第一个请求之后的每个请求的返回速度都比第一个请求快得多,并且包含第一个响应中不存在的新标头 Age。这表明我的命令行工具中的 HttpClient 正在从缓存返回响应,而不是发出新请求。
这是带有响应标头的第一个请求:
HTTP:>GET http://myserver:8058/path1/path2
Status 200 OK (OK in 00:00:00.3235905):
Date = Sat, 08 Jul 2017 15:55:22 GMT
Server = Microsoft-HTTPAPI/2.0
Content-Length = 150867
Content-Type = application/json; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
这是我的curl工具的同一会话稍后发出的请求:
HTTP:>GET http://myserver:8058/path1/path2
Status 200 OK (OK in 00:00:00.0188433):
Date = Sat, 08 Jul 2017 15:55:22 GMT
Server = Microsoft-HTTPAPI/2.0
Age = 312
Content-Length = 150867
Content-Type = application/json; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
最后,在我停止并启动程序后,这是来自新实例的另一个请求:
HTTP:>GET http://myserver:8058/path1/path2
Status 200 OK (OK in 00:00:00.0517271):
Date …Run Code Online (Sandbox Code Playgroud) 我想让浏览器缓存重定向的响应。
我将标签src上的属性设置img为重定向到最终资源的 url。重定向仅在短时间内有效(例如 15 分钟),但下载的实际内容是长期有效的(即可以安全地存储一年)。我正在设置Cache-Control: max-age: <1 year>图像响应,但是由于重定向只能使用 15 分钟,所以我设置了Cache-Control: max-age: <15 minutes>. 我怎样才能告诉浏览器使用最终响应的缓存设置,甚至不必在后续页面视图中遵循重定向?
3XX我使用什么类型的重定向 ( ) 有关系吗?
这与:Chrome 和 Safari 缓存 302 重定向有关,但我实际上希望他们将其视为错误。
http http-caching browser-cache http-status-code-301 http-status-code-302
我的访问者从Varnish获得了该页面的缓存版本.我希望管理员用户一直看到该页面的当前版本.这样,所有更改都可以直接显示.
有这样的存在吗?我知道@never_cache装饰者.我正在寻找类似的东西,只有用户没有登录.
如果它适用于Django-CMS,则可获得奖励积分!
我发现我调用REST的服务器将cookie传递给我的iPhone.它还使用HTTP Basic Auth.
我有一个应用程序,您可以在其中更改用于身份验证的帐户,但是我发现更改凭据无关紧要,因为didReceiveAuthenticationChallenge从未调用过.
我已经研究了两个可能的修复:
[request setHTTPShouldHandleCookies:NO]我想知道我是否正确理解这一点.我预计NSURLRequestReloadIgnoringCacheData会照顾缓存,但似乎并非如此.
我该如何解决这个问题?
编辑:我只是试着设置shouldHandleCookies到NO,但似乎饼干仍然传递到服务器.
我们有几个文件通过HTTP提供,并且不时更改.
哪些是与缓存相关的HTTP标头,我们应该在HTTP响应中返回以优化浏览器加载速度,同时强制浏览器验证它是否具有文件的最新版本?
我们已经设置了一个"Expires"标题,其中包含过去的日期(此时似乎已达成共识).
但是有些人建议设置这个标题:
Cache-Control: no-cache, no-store, must-revalidate
Run Code Online (Sandbox Code Playgroud)
但是这个标题的问题在于它阻止浏览器保留文件的本地副本,因此每次使用200响应代码下载文件,即使它没有更改.
如果我只是使用:
Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)
然后浏览器(至少Firefox 14和Chrome 20)保留本地副本,发送If-Modified-Since和If-None-Match标题,服务器返回304代码并且不下载文件内容. 这是可以随时更改的这些文件的最佳行为.
问题是我不知道设置"no-cache"是否足以强制所有浏览器(包括旧的但仍然使用的版本)和代理服务器使用服务器重新验证其本地缓存副本.
最后,Pragma: no-cache标题怎么样?它应该也包含在HTTP响应中吗?
有人可以澄清这个关于缓存的陈述.
https://developers.google.com/speed/docs/best-practices/caching说
它是多余的同时指定
Expires和Cache-Control: max-age,或同时指定Last-Modified和ETag.
然后它说
指纹识别机制允许服务器将
Expires标题设置为在请求日期之前一年; 将Last-Modified报头添加到文件的最后修改日期; 和Cache-Control: max-age标题3153600.
后一种说法与先前的说法相反 - 关于不设置Expires和Cache-Control.
第一个陈述是常态,第二个是异常吗?或者这个文档是否违背了自己的建议?有什么建议的?
谢谢.
我在这个页面上有这个代码:
<!-- no cache headers -->
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<!-- end no cache headers -->
Run Code Online (Sandbox Code Playgroud)
当我转到其他页面并点击浏览器的按钮(返回到编写此代码的页面)时,它仍然具有页面的缓存状态.选项是,添加PhaseListener,但他们告诉我添加PhaseListener是一个额外的代码来维护.
问题是:
1.是元标记属性http-equiv值在所有浏览器的html中仍然支持cache-control?因为当我在w3school登记时,属性http-equiv没有值缓存控制,编译指示和过期.
2.如果我添加了phaseListener,那么在每个页面中添加元标记会有什么好处.
谢谢你
我使用WebPageTest来测试Azure Web App的性能(ASP.Net vNext Web API/Angular).我得到了"压缩传输"和"缓存静态内容"的F.
在搜索StackOverflow和Google之后,我在web.config中添加了以下内容:
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<clear />
<remove mimeType="*/*" />
<add enabled="true" mimeType="text/*"/>
<add enabled="true" mimeType="message/*"/>
<add enabled="true" mimeType="application/x-javascript"/>
<add enabled="true" mimeType="application/javascript"/>
<add enabled="true" mimeType="application/json"/>
<add enabled="false" mimeType="*/*"/>
<add enabled="true" mimeType="application/atom+xml"/>
<add enabled="true" mimeType="application/atom+xml;charset=utf-8"/>
</dynamicTypes>
<staticTypes>
<clear />
<remove mimeType="*/*" />
<add enabled="true" mimeType="text/*"/>
<add enabled="true" mimeType="message/*"/>
<add enabled="true" mimeType="application/javascript"/>
<add enabled="true" mimeType="application/atom+xml"/>
<add enabled="true" mimeType="application/xaml+xml"/>
<add enabled="true" mimeType="application/json"/>
<add enabled="false" mimeType="*/*"/>
</staticTypes>
</httpCompression>
Run Code Online (Sandbox Code Playgroud)
和
<staticContent>
<!-- Set expire headers to 30 …Run Code Online (Sandbox Code Playgroud) http-caching ×10
caching ×4
http ×3
.net ×1
azure ×1
c# ×1
cocoa-touch ×1
django ×1
gzip ×1
iphone ×1
java ×1
jsf-2 ×1
no-cache ×1
objective-c ×1
wininet ×1