标签: cache-control

LiveHttpHeaders:哪个缓存控制信息是正确的

使用LiveHttpHeadersfor Firefox 6我试图看看我的css,JS文件是否使用htaccess从Apache使用Headers Module进行缓存.但我很困惑,"Cache-Control"数据中有2个值:

GET /proz/css/global.css HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://localhost/proz/
Cookie: PHPSESSID=el34de37pe3bnp4rdtbst1kd43
If-Modified-Since: Fri, 16 Sep 2011 21:15:32 GMT
If-None-Match: "400000000b06a-2999-4ad157e5b4583"
Cache-Control: max-age=0

HTTP/1.1 304 Not Modified
Date: Sat, 17 Sep 2011 03:04:50 GMT
Server: Apache/2.2.17 (Win32) PHP/5.2.8
Connection: Keep-Alive
Keep-Alive: timeout=5, max=99
Etag: "400000000b06a-2999-4ad157e5b4583"
Cache-Control: max-age=604800, public
Vary: Accept-Encoding

哪一个是真实数据,第一个Cache-Control数据(max-age = 0)或后者.

我还想知道在htaccess中使用deflate模块之后如何确保我的JS,CSS,HTML文件被压缩.是的,标题和deflate模块都打开了.

firefox header http cache-control

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

ASP.NET网页过期缓存问题

我似乎有问题而且我找不到解决方案....我有一个ASP.NET搜索表单,当用户点击结果然后单击浏览器的后退按钮时,用户将被定向到一个页面'网页已过期'

我知道这是缓存问题,这是我试过的...

protected void Page_Init(object sender, EventArgs e)
{
    Response.AppendHeader("Cache-Control", "no-cache"); 
}
Run Code Online (Sandbox Code Playgroud)

protected void Page_Init(object sender, EventArgs e)
{
    Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate");
    Response.AppendHeader("Pragma", "no-cache");
    Response.AppendHeader("Expires", "0");
}
Run Code Online (Sandbox Code Playgroud)

这些解决方案似乎都不起作用,任何人都知道为什么?

我也尝试过这个......

Response.Cache.SetExpires(DateTime.Now.AddMinutes(-1));
Run Code Online (Sandbox Code Playgroud)

但它没有用.

我做了更多的挖掘,我用Fiddler检查我的标题,它说Cache-Control: private, no-store, must-revalidate我没有将我的Cache-Control设置为私有的任何地方......我所有的都是导入,我的导入之一是否有可能是Cache-Control在他们中?

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using CMS.UIControls;
using CMS.GlobalHelper;
using CMS.CMSHelper;
using CMS.Controls;
Run Code Online (Sandbox Code Playgroud)

asp.net caching cache-control

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

如何确定缓存的阻塞因子

我正在尝试找到一种方法来缓存使用最近对算法(暂时强力)的应用程序的元素数组。根据《缓存性能和阻塞算法优化》论文,它说:

分块是一种用于提高内存层次结构有效性的通用优化技术。通过在更快的层次结构中重用数据,可以减少平均访问延迟。它还减少了对层次结构中较慢级别的引用数量。因此,阻塞优于预取等优化,后者隐藏了延迟,但不会降低内存带宽要求。这种减少对于多处理器尤其重要,因为内存带宽通常是系统的瓶颈。分块已被证明对于线性代数中的许多算法都很有用。

论文给出了一个矩阵乘法代码,并将其修改为阻塞,减少缓存未命中:

for kk = 1 to N by B
  for j = 1 to N by B
    for i = 1 to N
      for k = kk to min(kk + B-1, N)
         r = X[i,k];  // register allocated
         for j = jj to min(jj + B-1, N)
           Z[i,j] += r * Y[k,j];
Run Code Online (Sandbox Code Playgroud)

这里,B分块因子,但我们如何确定它呢?是否有通用方法来查找 cpu 缓存可以处理的特定限制?可能不是所有的CPU都有相同的缓存。通用程序说:

  • 首先是重构代码以阻止那些进行重用的循环。
  • 其次是选择最大化局部性的阻塞因子。

最接近配对算法(暴力)是:

minDist = infinity
for i = 1 to length(P) - 1
  for j …
Run Code Online (Sandbox Code Playgroud)

c c++ caching cache-control blocking

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

如何检查/测试应用程序是否未在浏览器上缓存?

我已经写了一个class CacheControlFilter implements javax.servlet.Filter to set header 来确保应用程序没有缓存。也已经在 web.xml 中完成了输入

<filter>
    <filter-name> Cache controller filter</filter-name>
    <filter-class>com.filter.CacheControlFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>Cache controller filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

请建议我如何检查/测试这是否有效?如果您想了解更多信息,请告诉我。

java spring caching cache-control browser-cache

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

在 spring security 中禁用特定 url 的缓存

在我的情况下,我有四种方法来解决我的问题:

  1. 在我的中写入元配置index.html并禁用缓存(对我不起作用)
  2. 更改index.htmlindex.jsp并禁用缓存,如下所示(对我有用,但我的客户组需要index.html)
  3. 使用过滤器web.xml区分所需的请求并禁用缓存
  4. 春季安全

我的问题是如何使用 Spring Security 禁用缓存index.html (也许使用intercept-urlinhttp标签)

java cache-control spring-security

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

使用 javaScript 或 jquery 清除页面刷新时的缓存

我的网页http://avocettechnologies.com/avocetiq/第一次加载时工作正常,但是当我单击刷新按钮或重新加载页面时,它不会完全加载(进入移动和其他内容的转换部分),特别是在 Chrome 中,如果我按 ctrl + f5 就会正常工作

所以我想在页面刷新或重新加载完成时清除缓存,或者是否有更好的解决方案

我尝试了以下代码,但它不断加载页面

    <script>
      window.onload = function() {
      if(!window.location.hash) {
       window.location = window.location + '#loaded';
       window.location.reload();
      }
    }
    </script>
Run Code Online (Sandbox Code Playgroud)

`

我的网站是 angularjs

谢谢

javascript google-chrome cache-control web angularjs

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

在浏览器中点击刷新时缓存控制不起作用

我正在尝试在我的应用程序上实现缓存控制。我已经为所有字体设置了 tomcat 过滤器,给出 max-age=120。

当我在清除缓存的情况下第一次请求字体时,调用/响应如下:

第一的

正如你所看到的,我有 max-age 响应。现在我希望如果我点击刷新浏览器不会再次发送 http 请求,而是会发生以下情况:

第二

如您所见,第二个请求有一个

cache-control: max-age=0

value 并且响应从服务器缓存返回。我想要实现的是阻止来自浏览器的整个调用。

难道我做错了什么?

谢谢

tomcat caching http cache-control http-headers

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

HTTP 客户端 NoCache 标志导致空引用异常 C#

我添加了这一行以在 HTTP 客户端中不应用缓存

HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.CacheControl.NoCache = true;
Run Code Online (Sandbox Code Playgroud)

当我运行之前运行良好的应用程序时,我在第二行中收到此异常:

NullReferenceException:未将对象引用设置为对象的实例

我试过这是应用运行良好的 NoChache 标志,但我不确定它是否符合预期。

HttpClient httpClient = new HttpClient()
{ 
    DefaultRequestHeaders=
    { 
        CacheControl = CacheControlHeaderValue.Parse("no-cache, no-store"),
        Pragma = { NameValueHeaderValue.Parse("no-cache")}
    }
};
Run Code Online (Sandbox Code Playgroud)

请帮助我应用正确的方法来设置 NoCache 标志。

c# httpclient pragma cache-control xamarin.forms

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

我可以使用 netlify 的 CDN 来防止每天多次执行 lambda 吗?

我有一个 Netlify 部署的应用程序,它带有一个 lambda 函数,它调用外部 API 来获取一些数据。外部API数据每天更新一次,我希望lambda响应在Netlify的CDN中缓存24小时,所以我不调用lambda函数,从而调用外部API,一天不止一次.

为了测试这一点,我编写了一个简单的 lambda 函数:

exports.handler = function(event, context, callback) {
  callback(null, {
    statusCode: 200,
    body: new Date().toString(),
    headers: {
      'Cache-Control': 'public, s-maxage=86400',
    },
  });
};
Run Code Online (Sandbox Code Playgroud)

当 10 秒后第二次调用端点时,我确实在响应主体中获得了相同的时间,表明响应确实被缓存了。但是当从两个不同的设备(我的电脑和我的 4G 手机,所以不同的 IP 和 ISP)调用它时,我得到了不同的日期,好像每个设备都提供了不同的缓存响应,我可以在 Netlify 的仪表板中看到 lambda 是调用了两次。

关于 Netlify 的 CDN 是如何工作的,我有什么不明白的地方吗?有没有办法实现我正在尝试做的事情?

http cache-control netlify

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

Varnish - stale-while-revalidate 似乎不会重新验证

我们使用 Varnish 缓存 6.2 位于 WebAPI 后端前面。后端会根据某些请求发送回缓存控制标头,以便我们可以缓存更长时间。

但是,如果后端出现故障并保持故障状态,我们会发送一个小时的 stale-while-revalidate。

因此,来自我们后端的典型缓存控制响应标头如下所示:

public, max-age=30, stale-while-revalidate=3600
Run Code Online (Sandbox Code Playgroud)

在我们的 Varnish VCL 中,我们添加了一个例程,可以在出现某些错误时停止后台获取。这是为了阻止后端的错误响应进入缓存:

sub vcl_backend_response {
    if (beresp.status == 500 || beresp.status == 502 || beresp.status == 503 || beresp.status == 504)
    {
        if (bereq.is_bgfetch)
        {
            return (abandon);
        }

        set beresp.ttl = 1s;
    }
}
Run Code Online (Sandbox Code Playgroud)

我们面临的问题很简单——即使后端可用,Varnish 在 Max-Age 过期后也不会更新缓存中的项目。(并且响应发生了变化)我们已经看到了 Varnish 的响应“Age”标头超过 200 秒的问题,并且响应错误。我们还看到“Age”标头为 1-3 秒的情况,这表明发生了后台提取(或正常提取)。

这种情况发生的频率足以让我们注意到——但并不是每个请求都会发生。

我尝试过简单的“pass”,例如 Varnish 中的以下内容:

sub vcl_recv {
    return(pass);
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎没有效果。

Varnish 设置是否还有其他问题可能导致上述情况?

编辑,根据评论,这是我们添加到与我们的请求交互的每个子中的一个小东西,以查看实际发生的情况:

sub vcl_deliver {
    if (obj.uncacheable) {
        set …
Run Code Online (Sandbox Code Playgroud)

caching cache-control varnish

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