标签: cache-control

浏览器缓存控制,动态内容

问题:我似乎无法让FireFox缓存从动态服务器发送的图像

设置:静态Apache服务器,在后端具有反向代理到动态服务器(mod_perl2).

这是服务器的请求URL.它被发送到动态服务器,其中cookie用于验证对映像的访问:

请求标题

Host:  <OBSCURED>
User-Agent:  Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15
Accept:  image/png,image/*;q=0.8,*/*;q=0.5
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
Keep-Alive:  300
Connection:  keep-alive
Referer: <OBSCURED>
Cookie:  pz_cred=4KCNr0RM15%2FJCOt%2BEa6%2BL62z%2Fxvbp2xNQHY5pJw5d6Q
Pragma:  no-cache
Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)

动态服务器将图像流回服务器,并提供以下响应:

响应标题

Date:  Tue, 24 Nov 2009 04:28:07 GMT
Server:  Apache/2.2.11 (Ubuntu) mod_apreq2-20051231/2.6.0 mod_perl/2.0.4 Perl/v5.10.0
Cache-Control: public, max-age=31536000
Content-Length:  25496
Content-Type:  image/jpeg
Via: 1.1 127.0.1.1:8081
Keep-Alive:  timeout=15, max=75
Connection:  Keep-Alive
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好(我认为).但是,在重新加载页面时,图像不会显示为缓存,并再次发送请求:

请求标题

Host: <OBSCURED>
User-Agent:  Mozilla/5.0 (X11; U; …
Run Code Online (Sandbox Code Playgroud)

browser cache-control mod-perl2

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

Zend如何使用缓存组件

假设你有这种情况:一个简单的博客主页,它既可以加载静态内容,也可以加载动态内容.静态内容由很少变化的图像组成.我还有数据库驱动的动态内容.动态内容包含所有博客文章(文本和图像)和相关用户评论.动态内容定期从每小时变化到每天.

您将如何使用缓存?特别是假设用户正在发表评论或管理员正在添加/编辑帖子,您希望手动触发缓存清除以获得此博客主页的更新版本?

谢谢你的耐心.

卢卡

再次感谢

php zend-framework cache-control

3
推荐指数
2
解决办法
8157
查看次数

.htaccess cache-control不会缓存我的文件(js | png | css等)

正如我的标题所说,我正在尝试缓存控制我网站上的内容,但似乎我的内容没有被缓存.

这是我的.htaccess文件中的代码:

Header unset Pragma
FileETag None
Header unset ETag

# cache images/pdf docs for 10 days
<FilesMatch "\.(ico|pdf|jpg|jpeg|png|gif|js)$">
Header set Cache-Control "max-age=864000, public, must-revalidate"
Header unset Last-Modified
</FilesMatch>

# cache html/htm/xml/txt diles for 2 hours
<FilesMatch "\.(html|htm|xml|txt|xsl)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多教程,但似乎没有一个教程.顺便说一句,其他.htaccess代码,如重定向和东西,都可以工作.

apache .htaccess caching cache-control

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

为 Azure 存储容器设置默认缓存标头

我想在 Azure 存储容器中的所有现有未来 Blob上设置默认缓存标头。

我只能找到有关如何为现有 blob 设置缓存标头的教程:https : //azure.microsoft.com/nl-nl/documentation/articles/cdn-manage-expiration-of-blob-content/

如何确保未来的 blob 也获得相同的标头,而不必每隔一段时间运行一次脚本?也许有一种方法可以在容器上设置默认缓存标头?

caching cache-control azure azure-storage-blobs

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

我的 max-age 标头来自哪里?

我很清楚如何自己设置它,但我担心在两个不同的地方配置它。要获得赏金,请告诉我应该在哪里寻找现有设置。

我们已经寻找现有设置的地方,但没有成功:

  • web.config<StaticContent>部分
  • IIS 输出缓存部分,在所有三个级别:
    • 机器
    • 地点
    • 应用
  • 代码(我对 进行了全局搜索SetMaxAge

语境

我们最近注意到我们的 CSS 和 JS 文件没有得到刷新。当我检查网络流量时,它们从服务器返回,并带有一个标头 ( Cache-Control: max-age=604800),该标头为它们提供了 7 天的生命周期。

我们需要减少缓存寿命。但对于我的生活,我找不到它的位置。

没有在 web.config<StaticContent>部分中设置。

没有在 IIS 输出缓存部分设置(我查看了机器、站点和应用程序——它们都是空白的)。

没有在代码中设置——我进行了全局代码搜索SetMaxAge并得到了 nuthin'。我还能在哪里看?

它可能是由我们数据中心的网关或负载均衡器设置的吗?

asp.net iis iis-7 outputcache cache-control

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

现代浏览器是否缓存ajax响应?

我最近发现,我们Cache-Control:no-cache在所有WebApi响应中都使用了它。我知道在浏览器缓存发生变化之前,您永远都不知道浏览器是否可以缓存json,因此这很重要。

据我所记得,目前还没有现代浏览器在缓存ajax响应,因此不需要此标头。但是我真的很想再次检查一下,并在这里询问一下行为,因为找不到有关该主题的最新文章。

所以问题实际上是:我们是否仍需要设置Cache-Control:no-cacheSPA应用程序的Web api调用,如果是,那么哪些浏览器进行缓存?

ajax cache-control browser-cache asp.net-web-api single-page-application

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

Symfony HTTP Cache-Control标头覆盖

我前段时间回答过这个问题.

我在Symfony 3.4中的代码.

 $response->setCache([
     'max_age' => 3600,
     'public' => true,
     's_maxage' => 3600,
 ]);


 // (optional) set a custom Cache-Control directive
 $response->headers->addCacheControlDirective('must-revalidate', true);

 return $response;
Run Code Online (Sandbox Code Playgroud)

在某些原因,我仍然得到Cache-Control像这样的其他标题:

Cache-Control: max-age=0, must-revalidate, private, s-maxage=3600
X-Symfony-Cache: GET /: miss
Run Code Online (Sandbox Code Playgroud)

我注意到在Symfony 3.2代码中运行良好,但在3.4中我没有进入publicCache-Control(并且max-age=0看起来也很糟糕).

第二件事是$response在控制器中倾倒- 一切看起来都很好:

#headers: array:2 [?
  "cache-control" => array:1 [?
    0 => "max-age=3600, must-revalidate, public, s-maxage=3600"
  ]
  "date" => array:1 [?
    0 => "Sat, 12 May 2018 18:42:04 GMT"
  ]
]
Run Code Online (Sandbox Code Playgroud)

它是某种Symfony bug吗?我应该报告吗?

caching http cache-control symfony

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

ActiveStorage:为什么不使用service_url而不是blob / variant / preview url(302重定向)?

在Rails 5.2中,Active Storage使我们能够生成永久性URL,这些URL通过每次调用时唯一的签名URL重定向到资产。

的HTML: <img src='/rails/active_storage/blobs/ey...' />

服务器:

Started GET "/rails/active_storage/blobs/eyJfcmFpbH...
302 Redirected to https://bucket.amazon/image.jpg?X-Amz-Algorithm=AWS4-HMA...
Run Code Online (Sandbox Code Playgroud)

我想知道Active Storage正在向整体中添加HTTP请求的数量,网页中的一个blob_url =向整体中的另一个请求,以便通过302重定向获取最终的资产url。因此一页包含20张图像=> 20个附加请求。(但它们很快)

所以我的问题是:为什么使用此系统而不是直接使用最终URL(.service_url):

<img src='https://bucket.amazon/image.jpg?X-Amz-Algo...'>

我在想这些论点:(但是还有其他吗?)

  • blob_url可以在服务器端进行缓存,因为它是永久的(例如:fragment caching
  • blob_url可以通过身份验证进行保护,这意味着可以共享唯一的url,但是有人需要进行身份验证才能看到资产(例如,通过修改rails blob控制器)
  • 也许是第三个?在浏览器端更好地缓存?浏览器是否能够使用永久URL缓存图像数据?即使亚马逊网址的有效期为5分钟?

ruby-on-rails http cache-control http-headers rails-activestorage

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

如何防止 Angular 7 站点上的浏览器缓存?

我在生产环境中有一个 Web 应用程序。用户每天都在使用它,当我发布更新并且用户返回 Web 应用程序时,他/她会查看 Web 应用程序的旧版本。他需要刷新浏览器才能加载新版本。我怎么解决这个问题?每次发布更新(每周 3-4 次)时,我都无法告诉数百名用户刷新页面。我使用以下内容来构建我的前端应用程序:Angular7 with angular-cli。

caching cache-control browser-cache angular angular7

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

清除Angular中的浏览器缓存

我经常更新的Angular应用程序存在问题。

我想避免浏览器缓存,我正在尝试几种替代方法,但是它们都不起作用。

第一件事是我很难测试该解决方案是否有效,因为当我上载新版本时,有时我看到它而不必执行其他操作,而不必刷新页面,而有时候我需要打开控制台并强制刷新清空缓存。

我试图在请求标头中包含Cache-Control:no-cache,如您在图像中所见,但这对我不起作用。

在此处输入图片说明

我也尝试过,放入app.component.ts

templateUrl: './app.component.html? v1'
Run Code Online (Sandbox Code Playgroud)

正如我在一些答案中看到的那样,但都没有。

事实是我很绝望,因为当我给出我认为可行的东西时,当我与老板核对时,他不会刷新它:-(,可惜的是,正如我所说的,我不知道该怎么做确实,每次我进入网络时,都要从服务器请求最新版本。

谢谢您的帮助

browser cache-control browser-cache angular

3
推荐指数
2
解决办法
6217
查看次数