标签: cache-control

IIS7:缓存设置不起作用......为什么?

我的IIS7 web.config设置为以下静态资源文件夹(不在ASP.NET应用程序或任何内容中):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="500.00:00:00" />
        </staticContent>
        <httpProtocol allowKeepAlive="false" />
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

当我尝试访问Silverlight .XAP文件时,我希望IIS告诉浏览器它可以缓存500天.

但是,这是缓存头:

Cache-Control: no-cache,public,max-age=43200000

为什么IIS仍然no-cache使用上述配置文件添加到此标头?

silverlight iis-7 cache-control browser-cache

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

使用 php 生成 php 电子标签

此 PHP 代码为 xml 文件生成 eTag。问题是 eTag 仅当文件本身更新/修改时才会更新。当动态结果更新时,我也需要更新 etag。知道如何做到这一点吗?

//get the last-modified-date of this very file
$lastModified=filemtime(__FILE__);

//get a unique hash of this file (etag)
$etagFile = md5_file(__FILE__);

//get the HTTP_IF_MODIFIED_SINCE header if set
$ifModifiedSince=(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false);

//get the HTTP_IF_NONE_MATCH header if set (etag: unique file hash)
$etagHeader=(isset($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false);

//set last-modified header
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $lastModified)." GMT");

//set etag-header
header("Etag: $etagFile");

//make sure caching is turned on    
//check if page has changed. …
Run Code Online (Sandbox Code Playgroud)

php xml apache etag cache-control

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

视频加载 206 - 部分内容

我在加载视频时遇到问题 - 它们都返回 206(部分内容)响应。我想在 100% 完成时触发一个事件,但还没有实现。

这是我在检查器中得到的信息:

响应头

Accept-Ranges:bytes
Accept-Ranges:bytes
Connection:keep-alive
Content-Length:12465963
Content-Length:12465963
Content-Range:bytes 0-12465962/12465963
Content-Type:video/mp4
Date:Wed, 01 Apr 2015 00:26:29 GMT
ETag:"6f23fd3-be372b-51239e2090e70"
Host-Header:192fc2e7e50945beb8231a492d6a8024
Last-Modified:Fri, 27 Mar 2015 00:04:58 GMT
Server:Apache
X-Cache:SGCACHE-MISS
X-Forwarded-For:189.135.253.115
Run Code Online (Sandbox Code Playgroud)

请求标头

Accept:*/*
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:PHPSESSID=ml8n0hh37na09ggjcvvbeld383; key=76626f47b940e09d3601920b684befc62d703fd5%2Bda9d8d1ede4727d1486ac7274487ffa8994d18f3%7C1427415309%7Ce2fa179955ca0ce759d4ba10c1227e825bba261f%7CZGV2YWRtaW4%3D
DNT:1
Host:[xxxxx]
Pragma:no-cache
Range:bytes=0-
Referer:[xxxxx]
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36
Run Code Online (Sandbox Code Playgroud)

我看到了这个:Content-Range:bytes 0-12465962/12465963- 并注意到它已经加载了除最后一个字节之外的所有字节。

次要问题:我也看到了Cache-Control:no-cache。我正在加载的视频并不大,最好将它们保留在缓存中一小段时间。

我对标题之类的东西一无所知。这是怎么回事?

video cache-control http-headers

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

浏览器如何比较URL进行缓存?

具体来说,URL的哪些部分用于比较。假设我在提供CSS样式表https://www.example.com/a/b/test.css与相应的HTTP报头cache-controlmax-age等当用户进入到每个以下URL后,该人将担任缓存文件?

https://www.example.com/a/b/test.css
https://www.example.com/a/b/test.css?abc=123
https://www.example.com/a/b/test.css#abc=124
Run Code Online (Sandbox Code Playgroud)

基本上,我要问的是,当浏览器决定是否使用缓存的资源时,是否比较URL字符串的“搜索”和“哈希”部分。此外,这种比较逻辑在浏览器之间是否是一致的,还是某些标准的一部分?

browser caching cross-browser cache-control browser-cache

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

服务工作者缓存是否支持缓存控制头?

服务工作者缓存是否支持缓存控制头?例如,如果缓存中的条目具有标题cache-control: no-store或者cache-control: max-age=60这些条目是否受到尊重match()

CACHE HIT尽管cache-control: no-store响应中出现标题,但以下代码仍会输出.(我认为同样的问题适用于max-age.)

function warm(c) {
  var req = new Request("/foo.txt");
  var res = new Response("hello", {
    status: 200,
    statusText: "OK",
    headers: new Headers({
      "cache-control": "no-store",
      "content-type": "text/plain"
    })
  });
  return c.put(req, res).then(function () { return c; });
}

function lookup(c) {
  return c.match(new Request("/foo.txt")).then(function (r) {
    return r ? "CACHE HIT" : "CACHE MISS";
  });
}

function deleteAllCaches() {
  return caches.keys().then(function (cacheNames) {
    return Promise.all( …
Run Code Online (Sandbox Code Playgroud)

javascript cache-control service-worker

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

Azure Verizon CDN - 100% 缓存 CONFIG_NOCACHE

几天前我设置了一个 Azure Verizon Premium CDN,如下所示:

来源:Azure web 应用程序(.NET MVC 5 网站)
设置:自定义域,无地理过滤
缓存规则:标准缓存(不关心参数)
压缩:启用
优化:动态站点加速
协议:HTTP、HTTPS ,自定义域 HTTPS
规则:通过规则引擎强制 HTTPS(如果请求方案 = http,301 重定向到 https://{customdomain}/$1)

所以 - 这个 CDN 现在已经运行了几天,但是 ADN 报告说几乎 100% (99.36%) 的缓存状态是“CONFIG_NOCACHE”(描述:“对象被配置为从不按照位于边缘服务器上的客户特定配置,因此响应是通过源服务器提供的。”)其中一些(0.64%)是“无”(描述:“针对此请求完全绕过缓存。例如,请求立即被令牌身份验证模块拒绝,或者客户端请求方法使用了不可缓存的请求方法,例如“PUT”。)此外,在“缓存命中”报告中,它表示“0 命中,0 未命中”对于每个日。没有任何东西通过“HTTP Large”端,只有“ADN”。

我在四处搜索时找不到这些确切的消息,但我已经尝试过:

  • 将 cache-control 标头更新为 max-age, public(即:cache-control: public,max-age=1209600)
  • 将缓存控制标头更新为 max-age(缓存控制:max-age=1209600)
  • 将过期标头更新为未来的日期方式(过期:2038 年 1 月 19 日星期二 03:14:07 GMT)
  • 使用不同的浏览器所以请求缓存信息是不同的。在 Chrome 中,我的浏览器中的请求是“缓存控制:无缓存”。在 Firefox 中,它会显示“Cache-Control: max-age=0”。无论如何,我假设网站上的用户不会有这些相同的设置,对吗?
  • 多次刷新页面,查看实时报告以查看命中/未命中/缓存状态,它显示了相同的内容 - 几乎所有内容的 CONFIG_NOCACHE。
  • 尝试在https://www.dotcom-tools.com/website-speed-test.aspx上运行“全球”速度测试,但结果相同 - 一堆“NOCACHE”命中。
  • 尝试添加 ADN 规则以将内部和外部最大年龄设置为 864000 …

caching cdn cache-control azure azure-cdn

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

Apollo iOS swift 总是从本地缓存中获取 GraphQl

当我第一次使用 Apollo 为每次获取处理 GraphQl API 时,只有 Apollo 从服务器获取,其他总是从本地缓存获取

let apollo = ApolloClient(url: URL(string: graphQLEndpoint)!)
let meetingsQuery = AllMeetingsQuery()
apollo.fetch(query: meetingsQuery) { [weak self] result, error in
  guard let meetings = result?.data?.allMeetings else { return }
  print(conferences.count)
  self?.conferences = conferences.map {$0.fragments.meetingDetails }
}
Run Code Online (Sandbox Code Playgroud)

cache-control ios apollo swift graphql

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

如何向图像添加缓存控制过期标头?

我正在努力加速我网站上的活动.YSlow警告我,我的图片缺少过期标题.但是我如何在图像上应用这样的标题?

我的应用程序基于zend框架.图像存储在文件夹中的图像,我怎样才能为它们设置过期标题?

php zend-framework cache-control zend-cache

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

在退出时清除缓存以防止在注销后返回登录页面或上一页

这已经困扰了我一个星期了.好吧,我非常需要在用户成功登录后清除登录页面的缓存,并防止用户在按下后退按钮后退出后查看上一页.我尝试在codeigniter中添加此代码(索引页面和登录页面),但仍然没有任何反应

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Pragma: no-cache");
Run Code Online (Sandbox Code Playgroud)

以及这一个:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="01 Jan 1970 00:00:00 GMT">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
Run Code Online (Sandbox Code Playgroud)

我已经在考虑在后台运行的同步任务来检查会话但是我在AJAX中并不是那么好.那么我想要的就是让它像使用轨道上的红宝石一样简单Cache-Control: no-cache.顺便说一下,我也没有关于ruby的知识,但看到代码让我想知道为什么在codeigniter中没有像这样的简单解决方案?解决这个问题的任何解决方案?

php codeigniter cache-control http-headers

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

为什么在请求中使用Cache-Control标头?

此页面Cache-Control指定以下内容:

标准Cache-Control指令,可由客户端在HTTP请求中使用.

我以为只有服务器发回有关客户端是否应该缓存响应的信息.为什么客户端会向服务器发送缓存信息?

javascript caching cache-control

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