标签: http-caching

缓存 html 忽略查询字符串

在我的网站上,我使用查询字符串参数将信息传递给 Javascript,但返回的实际 html 与查询字符串无关(它只是由 Javascript 动态填充的模板)。

有没有简单的方法可以独立于查询字符串参数来缓存页面?我的一个想法是使用服务工作者从请求中删除查询字符串,但我想知道是否有任何更简单、更干净的方法。

http http-caching service-worker

5
推荐指数
1
解决办法
1800
查看次数

Dot Net HttpClient 是否意外缓存响应?

我正在尝试编写一个类似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)

.net c# wininet http-caching

5
推荐指数
0
解决办法
541
查看次数

缓存导致重定向的 img src

我想让浏览器缓存重定向的响应。

我将标签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

5
推荐指数
0
解决办法
269
查看次数

如果用户登录,Django会阻止缓存视图

我的访问者从Varnish获得了该页面的缓存版本.我希望管理员用户一直看到该页面的当前版本.这样,所有更改都可以直接显示.

有这样的存在吗?我知道@never_cache装饰者.我正在寻找类似的东西,只有用户没有登录.

如果它适用于Django-CMS,则可获得奖励积分!

django http-caching

4
推荐指数
2
解决办法
1382
查看次数

NSURLConnection,Basic Auth和Cookies的问题

我发现我调用REST的服务器将cookie传递给我的iPhone.它还使用HTTP Basic Auth.

我有一个应用程序,您可以在其中更改用于身份验证的帐户,但是我发现更改凭据无关紧要,因为didReceiveAuthenticationChallenge从未调用过.

我已经研究了两个可能的修复:

  • 在更改凭据时手动删除cookie
  • 设置 [request setHTTPShouldHandleCookies:NO]

我想知道我是否正确理解这一点.我预计NSURLRequestReloadIgnoringCacheData会照顾缓存,但似乎并非如此.

我该如何解决这个问题?

编辑:我只是试着设置shouldHandleCookiesNO,但似乎饼干仍然传递到服务器.

iphone cocoa-touch objective-c http-caching nsurlconnection

4
推荐指数
1
解决办法
2124
查看次数

expires,max-age和shared max-age之间有什么区别?

我从未使用过HTTP缓存.

我在Symfony文档页面上找到了这些缓存选项.

我只是想知道什么是之间的区别expires,max-age以及s-maxage头?

caching http-caching

4
推荐指数
1
解决办法
2350
查看次数

对于可以更改的内容,哪些是与缓存相关的最佳HTTP标头?

我们有几个文件通过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-SinceIf-None-Match标题,服务器返回304代码并且不下载文件内容. 这是可以随时更改的这些文件的最佳行为.

问题是我不知道设置"no-cache"是否足以强制所有浏览器(包括旧的但仍然使用的版本)和代理服务器使用服务器重新验证其本地缓存副本.

最后,Pragma: no-cache标题怎么样?它应该也包含在HTTP响应中吗?

caching http no-cache cache-control http-caching

4
推荐指数
2
解决办法
584
查看次数

设置Expires和Cache-Control:max-age

有人可以澄清这个关于缓存的陈述.

https://developers.google.com/speed/docs/best-practices/caching

它是多余的同时指定ExpiresCache-Control: max-age,或同时指定Last-ModifiedETag.

然后它说

指纹识别机制允许服务器将Expires标题设置为在请求日期之前一年; 将Last-Modified报头添加到文件的最后修改日期; 和Cache-Control: max-age标题3153600.

后一种说法与先前的说法相反 - 关于不设置ExpiresCache-Control.

第一个陈述是常态,第二个是异常吗?或者这个文档是否违背了自己的建议?有什么建议的?

谢谢.

caching http-caching

4
推荐指数
2
解决办法
5227
查看次数

是不支持meta http-equiv值缓存控件?

我在这个页面上有这个代码:

<!-- 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,那么在每个页面中添加元标记会有什么好处.
谢谢你

java caching http-caching jsf-2

4
推荐指数
1
解决办法
5152
查看次数

Azure Web App不使用GZip压缩

我使用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)

gzip http-compression azure http-caching azure-web-sites

4
推荐指数
2
解决办法
6762
查看次数