标签: http-caching

在 Varnish 中禁止是如何工作的?

我无法理解禁止在 Varnish 中是如何工作的。从清除和禁止之间的区别的术语和思想来看,似乎

  • 清除使缓存无效,下一个请求进入后端并再次缓存。
  • BAN ,禁止一个网址。因为它使缓存无效,而不仅仅是下一个,而是所有即将到来的请求都开始进入后端。

请说清楚。

此外,禁止算法被定义为

缓存中的每个对象始终指向禁止列表中的一个条目。这是他们最后一次检查的条目。每当 Varnish 从缓存中检索某些内容时,它都会检查指向禁止列表的对象指针是否指向列表的顶部。如果它没有指向列表的顶部,它将针对禁止列表上的所有新条目测试该对象,如果该对象不匹配其中任何一个,则更新禁止列表的指针。

如果有人得到这个..请解释。这将非常有帮助。

caching varnish http-caching varnish-vcl

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

vite:将静态资产(带有缓存清除)添加到构建中

我有大型静态文件,应该使用 HTTP 缓存的哈希值来破坏这些文件。如果我将它们放入public目录中,vite 只会复制它们,而不在文件名中附加哈希值。如果我将它们放入assets目录中,vite 会忽略它们,因为它们不是直接从代码引用,而是通过 XHR 请求加载。\n目录结构非常标准:

\n
/\n\xe2\x94\x9c\xe2\x94\x80 src/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 assets/\n\xe2\x94\x82  \xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 locales/\n\xe2\x94\x82  \xe2\x94\x82  \xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 en.json\n\xe2\x94\x82  \xe2\x94\x82  \xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 de.json\n\xe2\x94\x82  \xe2\x94\x82  \xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 ru.json\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 main.js\n\xe2\x94\x9c\xe2\x94\x80 public/\n\xe2\x94\x9c\xe2\x94\x80 dist/\n\xe2\x94\x9c\xe2\x94\x80 index.html\n
Run Code Online (Sandbox Code Playgroud)\n

我如何告诉 vite 复制那些在文件名中添加了哈希值的文件,以及如何获取生成的文件名以在 XHR 请求中使用它们?

\n

http-caching webpack vue.js esbuild vite

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

如何避免要求客户端清除浏览器缓存以获取最新的Javascript更改?

客户端会报告我们的JS重型应用程序中的错误,我们修复了它,但客户端的浏览器仍在使用缓存副本.这种情况发生了很多,并要求我们的客户刷新他们的浏览器缓存似乎非常低技术和麻烦.

我们知道?ver=xxx解决方法,但我们使用RequireJS,因此应用此类黑客并不容易.

HTTP缓存控制是否有效?但是,我们注意到IIS没有立即获取JS文件更改,并且HTTP标头(上次修改)未反映最新更改.

ETag会更好吗?在IIS上最后修改它是好还是坏?

还有其他方法吗?谢谢

javascript iis coldfusion http-caching requirejs

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

在 okhttp 中,我想处理 Last-Modified 和 ETags,但不缓存整个响应

我正在使用 okhttp 和 Retrofit 来调用 REST 服务。从该服务返回的数据存储在我的 Android 应用程序中的 sqlite 数据库中。

每当我调用 REST api 时,如果数据没有更改(由 ETag 或 Last-Modified 标头确定),我希望 Retrofit 回调不执行任何操作(数据库中的数据没问题)。否则,我想从 REST 服务下载更新的 JSON 并更新数据库(通过回调的 onSuccess 方法)。

关于缓存响应的所有设置磁盘缓存的 okhttp 示例,我只需要缓存/存储每个请求的 Etag/上次修改时间(而不是整个响应)。

我应该通过传递给 okhttp 的自定义缓存实现来执行此操作,还是应该与 okhttp 或 Retrofit 一起使用更好的接口?

一旦我完成了实现设置,我是否只需要在 onFailure 回调中处理304“错误”而不执行任何操作?

etag last-modified http-caching retrofit okhttp

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

在 WebFlux 中禁用 HTTP 缓存

Spring Boot MVC应用程序中,我以这种方式禁用 HTTP 缓存:

WebContentInterceptor cacheInterceptor = new WebContentInterceptor();
cacheInterceptor.setCacheSeconds(0);
cacheInterceptor.setUseExpiresHeader(true);
cacheInterceptor.setUseCacheControlHeader(true);
cacheInterceptor.setUseCacheControlNoStore(true);
registry.addInterceptor(cacheInterceptor);
Run Code Online (Sandbox Code Playgroud)

如何在Spring Boot WebFlux应用程序中做到这一点?

http-caching spring-boot spring-webflux

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

添加了 Varnish 禁令,但返回了旧对象

我在切片服务器前面使用清漆来缓存 Mapbox 切片。为了删除旧的图块,我打算使用禁令来有效地删除大量缓存的图块。我的问题是清漆仍然使用缓存的对象(至少age响应中表明了这一点)并且不联系后端。

curl -X BAN -H 'X-Purge-Regex: 5/3/4.pbf' varnish我首先请求 http://varnish/5/3/4.pbf,然后使用或 或者添加禁令varnishadm,然后ban obj.http.url ~ 5/3/4.pbf再次请求 http://varnish/5/3/4.pbf。

一开始我的禁令列表是空的:

Present bans:
1610117471.434488     1 C
Run Code Online (Sandbox Code Playgroud)

禁令已成功添加curl -X BAN -H 'X-Purge-Regex: 5/3/4.pbf' varnish

<!DOCTYPE html>
<html>
  <head>
    <title>200 Ban added</title>
  </head>
  <body>
    <h1>Error 200 Ban added</h1>
    <p>Ban added</p>
    <h3>Guru Meditation:</h3>
    <p>XID: 8</p>
    <hr>
    <p>Varnish cache server</p>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

并显示在禁止列表中

Present bans:
1610117369.028870     0 -  obj.http.url ~ 5/3/4.pbf
1610117307.220739     1 C  
Run Code Online (Sandbox Code Playgroud)

再次请求http://varnish/5/3/4.pbf后,ban列表显示使用了该ban

Present bans:
1610117471.434488     1 - …
Run Code Online (Sandbox Code Playgroud)

postgis varnish http-caching varnish-vcl mapbox-gl-js

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

如何使用java删除页面缓存

即使我使用session.invalidate方法,我的网页也会被缓存.如何使用java编码删除页面缓存?

java http-caching

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

在Laravel中使用HTTP缓存,生成静态文件路径

我打算在我的下一个项目中使用Laravel框架.到目前为止,我仍然陷入组织项目中静态内容的链接(图像,脚本等).例如,我有这个缓存选项(缓存所有静态文件,nginx):

location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
    expires max;
}
Run Code Online (Sandbox Code Playgroud)

如何建立文件main.js的链接?如果文件被修改,如何告诉代理文件已过期?

在我目前的项目中,我有版本控制系统,它使用文件修改时间为文件生成唯一的前缀.所以链接就像http://site.com/22566223435/js/main.js下次当文件更改链接自动更改时.

Laravel实现此功能的最佳做法是什么?谢谢!

php http-caching browser-cache laravel

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

为什么同一计算机缓存中的不同客户端的两个请求在云端丢失?

我的网站使用cloudfront作为其图像.如果我在浏览器中加载网页,然后使用curl在该页面上请求图像,则curl请求是缓存未命中.使用curl的后续请求是缓存命中.

示例:运行两次:

curl --verbose https://d1hvwudqvjuczb.cloudfront.net/assets/landing/splash_dickenko-2199af423f275d0784c1813cbaab5645.jpg`
Run Code Online (Sandbox Code Playgroud)

第一次,X-Cache将是"来自云端的小姐",第二次将是"来自云端".

因此,似乎cloudfront正在使用请求的某些方面来决定是否应该重新获取图像.

这个标准是什么?

curl http-caching amazon-cloudfront

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

浏览器缓存请求/响应,没有任何 Cache-Control 标头

我在 SPA Web 应用程序和 REST API 后端遇到浏览器缓存问题。我可以在打开开发人员工具的情况下在 Firefox 和 Safari 上重现它:我确保缓存未禁用。

当我进入第一个特定页面,该页面只是从 REST API 获取并显示对象时,我使用“硬刷新”(Mac 上的 CMD+R)来完成此操作。我看到以下标题:

第一个请求:

Host: localhost:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:77.0) Gecko/20100101 Firefox/77.0
Accept: application/json, text/plain, */*
Accept-Language: en,it;q=0.7,fr;q=0.3
Accept-Encoding: gzip, deflate, br
Origin: http://localhost:3000
DNT: 1
Connection: keep-alive
Referer: http://localhost:3000/literature/sde5e-zeb98
Cookie: ...
If-Modified-Since: Fri, 10 Jul 2020 16:19:24 GMT
If-None-Match: "2"
Cache-Control: max-age=0
Run Code Online (Sandbox Code Playgroud)

(注意Cache-Control标题,由于硬刷新而自动添加)

回复:

HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 6128
ETag: "2"
Last-Modified: Fri, 10 Jul 2020 …
Run Code Online (Sandbox Code Playgroud)

http-caching request-headers http-headers

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