标签: cache-control

缓存控制:私有和公共

如果服务器返回,http客户端应该怎么做Cache-Control: private, public

我有一种感觉private应该覆盖public,但我无法在RFC中找到确认(除了MUSTin privateMAYin public).

http web-standards cache-control rfc2616

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

对于可以更改的内容,哪些是与缓存相关的最佳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
查看次数

ASP.NET中的缓存控制标头不输出max-age

我有这个代码:

 context.HttpContext.Response.Cache.SetCacheability(HttpCacheability.Public);
 context.HttpContext.Response.Cache.SetMaxAge(TimeSpan.FromHours(24));
Run Code Online (Sandbox Code Playgroud)

响应如下:

Status Code: 200
Date: Fri, 14 Dec 2012 13:56:41 GMT
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 38436
X-AspNetMvc-Version: 4.0
Server: Microsoft-IIS/8.0
Content-Type: application/rss+xml; charset=utf-8
Cache-Control: public
X-SourceFiles: =?UTF-8?B?QzpcUHJvamVjdHNcVGVzdFxtYW5nb21pbnQucHVibGljXHNyY1xNYW5nb21pbnQuUHVibGljLldlYlxibG9nXHJzcw==?=
Run Code Online (Sandbox Code Playgroud)

为什么Cache-Control上没有定义max-age?

.net asp.net asp.net-mvc cache-control http-headers

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

Nginx add_header和缓存控制

在nginx中使用add_header指令时,标头将添加到来自源服务器的响应中.

假设源服务器返回cache-control public,max-age = 60.但是在nginx反向代理位置,您可以设置如下:

add_header cache-control public,max-age = 10

这究竟是做什么的?我可以想到两种不同的场景:

1)Nginx尊重来自源服务器的缓存控制头,并将内容存储在其缓存中,有效期为60秒.然后使用覆盖的标头传递响应,导致客户端将资源存储在其缓存中,到期时间为10秒.

要么..

2)Nginx首先覆盖响应头,然后解释它们.它以10秒的有效期存储资源,并将响应传递给客户端,客户端也将其缓存,有效期为10秒.

caching reverse-proxy nginx cache-control

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

我在 HTML 中放了什么来确保用户获得我的页面的最新版本,而不是旧版本?

我有一个从 CDN 提供的大部分静态 HTML 网站(加上一些 AJAX 到服务器),并且确实希望用户的浏览器缓存所有内容,直到我更新任何文件然后我希望用户的浏览器获得新版本。

对于我网站上的所有类型的静态文件(HTML、JS、CSS、图像等),我该如何实现?(HTML 或其他地方的设置)。显然我可以告诉 CDN 让它的缓存过期,所以它是我正在考虑的客户端。

谢谢。

html javascript cache-control browser-cache

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

用于缓存角度应用程序文件的 Nginx 配置

我有以下配置来运行 angular.js 应用程序,它工作正常。

location / {
    root   /usr/share/nginx/html;
    index  index.html;
    expires -1;
    add_header Pragma "no-cache";
    add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
    try_files $uri $uri/ /index.html =404;
}
Run Code Online (Sandbox Code Playgroud)

但是当我添加缓存时

location ~* \.(jpg|jpeg|png|gif|swf|svg|ico|mp4|eot|ttf|otf|woff|woff2|css|js)$ {
  add_header Cache-Control "max-age=86400, must-revalidate, s-maxage=2592000";
}
Run Code Online (Sandbox Code Playgroud)

文件不再可访问

[error] 5#5: *1 open() "/etc/nginx/html/scripts/vendor-1568b32f3e.js" failed (2: No such file or directory), client: 87.63.75.163, server: localhost, request: "GET /scripts/vendor-1568b32f3e.js HTTP/1.1", host: "myapp", referrer: "http://myapp/auth/login"
Run Code Online (Sandbox Code Playgroud)

不知道为什么/etc/nginx/html/在根路径为/usr/share/nginx/html

nginx cache-control angularjs

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

如何控制 QML 中 HTTP 资源的缓存?

考虑下面的一段代码,它获取一个 RSS 提要,然后将其中的图像显示为永远循环的幻灯片:

import QtQuick 2.2
import QtQuick.XmlListModel 2.0

Rectangle {
    id: window
    color: "black"
    width: 800
    height: 480

    PathView {
        anchors.fill: parent

        highlightRangeMode: PathView.StrictlyEnforceRange
        preferredHighlightBegin: 0.5
        preferredHighlightEnd: 0.5
        highlightMoveDuration: 500
        snapMode: PathView.SnapOneItem
        pathItemCount: 3 // only show previous, current, next

        path: Path { // horizontal
            startX: -width; startY: height/2
            PathLine{x: width*2; y: height/2}
        }


        model: XmlListModel {
            source: "http://feeds.bbci.co.uk/news/business/rss.xml"
            query: "/rss/channel/item"
            namespaceDeclarations: "declare namespace media = 'http://search.yahoo.com/mrss/';"
            XmlRole { name: "image"; query: "media:thumbnail/@url/string()" }
        }


        delegate: Image {
            width: …
Run Code Online (Sandbox Code Playgroud)

qt cache-control qml qtquick2

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

当缓存大小超过50 MB时,滑动,清除缓存

我正在使用Glide库进行图像加载.我的应用程序中有很多图像,所以我想在缓存大小超过50 MB时清除缓存.有人可以帮我这样做吗?

android cache-control image-loading android-glide

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

静态资产的Netlify标头缓存控制

是否可以仅对图像,字体,css和js等静态资产进行缓存控制?

这是我的解决方法

[[headers]]
  for = "/*" # This defines which paths this specific [[headers]] block will cover.
  [headers.values]
    Cache-Control = "public, max-age=604800"
Run Code Online (Sandbox Code Playgroud)

它很可爱,但是效果不如我预期。即使更新内容,该网站似乎仍使用旧版本。

cache-control http-headers netlify

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

仅为所选文件定义特定的缓存控制标头

我正在为 Gatsby 设置 Nginx 服务器(版本 1.17.1),以遵循https://www.gatsbyjs.org/docs/caching/上的建议。

下面的片段是我的server {}块尝试实现推荐的缓存配置的部分;

location ~* \.(?:html)$ {
    add_header Cache-Control "public, max-age=0, must-revalidate";
}

location /static {
    add_header Cache-Control "public, max-age=31536000, immutable";
}

location ~* \.(?:css|js)$ {
    add_header Cache-Control "public, max-age=31536000, immutable";
}

location /sw\.js {
    add_header Cache-Control "public, max-age=0, must-revalidate";
}
Run Code Online (Sandbox Code Playgroud)

同样尝试使用if 语句代替location {}为 service worker 文件定义缓存配置的块sw.js,如下所示;

if ($request_uri ~ ^sw\.(?:js)$) {
    set $no_cache 1;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,除了sw.js.

我在做什么错了,我怎么能解决这个问题,从而有效一套高速缓存控制报头sw.jspublic, max-age=0, must-revalidate …

nginx cache-control gatsby

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