标签: cache

为什么 IIS 7.5 经常刷新文件缓存?

我们正在运行带有 IIS 7.5 的 Win 2008 R2 服务器来提供图像文件。

它仅用于静态内容,文件缓存已设置为缓存文件 10 分钟。

但是 IIS 经常完全刷新缓存(通过使用 Perfmon 可以看到)

这不是应用程序池回收,也不是因为 TTL 已过期,所以现在我不知所措:-(

我已经包含了性能图的屏幕截图,您可以在其中清楚地看到问题。

有没有我可以看到为什么它会进行这些冲洗的地方?

(注意:我知道我可以通过将调试器附加到进程来检测它,但这不是一个选项,因为它是一个生产服务器,并且它无法处理调试器会导致的减速)

性能截图

cache iis-7.5

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

Linux(默认情况下)将有关磁盘中文件的信息缓存多长时间?

我正在测试我对某些代码所做的某些更改是否有效。为此,我需要知道文件系统缓存通常是如何工作的。我假设我们得到的是默认值,因为我们可能没有对此进行任何有趣的调整。

本质上,如果我从我的代码中询问“这个文件是否存在?”,答案会在“x”毫秒后返回。如果我后来又问了几分钟,答案回来了,快,所以我猜有一些缓存对那里发生的。

如果我想再次测试并刷新缓存,我应该等待多长时间,所以它会再次花费“很长时间”?(我想看看我是否修复了我的网络应用程序中的性能问题,但我只能知道它是否已修复,如果有关文件存在的信息未缓存,因为如果缓存,它确实运行得很快)

我知道这不是最有说服力的问题,答案可能是“视情况而定”,我要求的是理智的默认。换句话说,如果我在 3 小时或 6 小时后再次测试,我可以指望它不会被缓存吗?

据我所知......这是一个 Ubuntu 服务器,内核版本:3.9.3-x86-linode52,Ubuntu 版本:Ubuntu 12.04.3 LTS,托管在 Linode 上。文件系统是ext3

谢谢!
丹尼尔

linux filesystems cache

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

用于 Linux 上超快网络服务器的内存映射文件

有没有什么简单的方法可以告诉 Linux 在内存中缓存文件目录?

我意识到 Node.Js 和 Apache 将大部分时间花在文件 I/O 上,如果您有很多文件(尤其是对于脚本和模板文件;数据库可以根据需要缓存内容,如果表不是太大)。当然,您应该使用 Squid 或其他加快速度的方法,但这需要大量配置,并且不能轻松自动完成,我的重点是“可部署性”(即使是交互式安装也需要太多您的普通用户。当然,必须考虑所有安全因素(包括对包含的 httpd 配置的自动修补)。)。

另一方面,内存映射文件应该是轻而易举的,因为您真的只想告诉系统:“嘿,将该文件保留在内存中,直到我告诉您删除它或直到重新启动”;或者甚至是一些侵入性的 API,它可以直接将其挂钩到相关的 POSIX 或系统调用中,并且在用户空间中完全做到这一点。有那么简单吗?我似乎找不到一些简单的代码片段或指令集来完成(不适用于 Linux 或 Windows)。

帮助将不胜感激!

linux windows filesystems memory cache

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

DIG 从不同的服务器返回不同的结果

昨天,我的一个域名过期了,所以我的一个网站宕机了。我很清楚 dns 缓存,但我认为我错过了一些东西。

我的网站并没有到处停机(多亏了 dns 缓存)。但是,例如 Google dns 服务器给出的结果与两个服务器不同。怎么来的 ?

我的 DNS 有 .paris 扩展名(巴黎启动)

在我的电脑上,它运行良好。这是 dig 的结果:

dig @8.8.8.8 mydomain.paris

; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 mydomain.paris
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 189
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;mydomain.paris.         IN  A

;; ANSWER SECTION:
mydomain.paris.      27  IN  A   104.25.219.14
mydomain.paris.      27  IN  A   104.25.218.14

;; …
Run Code Online (Sandbox Code Playgroud)

domain-name-system cache domain-name dig

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

MD5 $request_body

我正在使用 nginx(和 OpenResty)并尝试$request_body对缓存进行哈希处理(使用srcache)。

当试图做到echo$request_body,它完美的作品:

# actually echoes the request body
location /works {
    # force loading the body
    echo_read_request_body;

    echo $request_body;
}
Run Code Online (Sandbox Code Playgroud)

但是当试图计算 md5 时,我得到了一个空字符串的 MD5,尽管我确保它$request_body是通过echo_read_request_body;.

# echoes d41d8cd98f00b204e9800998ecf8427e, which is the MD5 for empty input.
location /doesnt-work-md5 {
    # force loading the body
    echo_read_request_body;

    set_md5 $digest $request_body;
    echo $digest;
}
Run Code Online (Sandbox Code Playgroud)

最奇怪的现象是,在尝试复制变量时它甚至不起作用:

# echoes nothing - empty data
location /doesnt-work {
    # force loading the body …
Run Code Online (Sandbox Code Playgroud)

nginx cache

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

Nginx 作为反向代理不缓存

我正在尝试将 Nginx 配置为缓存反向代理。源服务器是 Apache,它托管一个 WordPress 实例,如果这很重要的话。

反向代理功能按预期工作,但缓存似乎不起作用。如果我连续两次获得相同的静态资源,我就会获得x-proxy-cache: MISS两次。

assodigitale.it 是域,138.201.87.123 是源服务器 IP 地址,138.201.87.124 是 Nginx 代理 IP 地址。

源服务器似乎回复允许代理缓存资源:

$ curl --connect-to ::138.201.87.123:443 --http2 -I https://assodigitale.it/wp-content/uploads/2018/03/aereo.jpg
HTTP/2 200 
date: Sun, 11 Mar 2018 20:59:39 GMT
server: Apache/2.4.25 (Debian)
content-length: 32989
strict-transport-security: max-age=31536000; includeSubdomains; preload
last-modified: Wed, 07 Mar 2018 09:34:41 GMT
etag: "80dd-566cf44ca2952"
accept-ranges: bytes
vary: Accept-Encoding
cache-control: max-age=1209600, public
x-content-type-options: nosniff
content-type: image/jpeg
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,对代理服务器的第一个请求会导致 MISS:

$ curl --connect-to ::138.201.87.124:443 --http2 -I https://assodigitale.it/wp-content/uploads/2018/03/aereo.jpg
HTTP/2 200 
server: nginx/1.13.9
date: …
Run Code Online (Sandbox Code Playgroud)

nginx cache reverse-proxy

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

NGINX 缓存(相同 URL)首先将 MISS 返回给所有 Chrome、Curl 和 Wget

我有一个 nginx 缓存代理,它从 apache 原始服务器获取内容。

我从curlwget和发出请求Chrome来验证缓存响应。问题是,对于相同的 URL,我总是MISS 在每个单独的客户端中得到第一次

我希望在我向任何客户提出一个请求后,其他客户会得到一个HIT,但我得到了MISS

HIT我只有在同一个客户端重复请求时才会收到。

感觉 key 与用户代理有关,但事实并非如此:

proxy_cache_key $scheme://$host$request_uri;
Run Code Online (Sandbox Code Playgroud)

为了排除不同的HTTP版本和用户代理,我在请求中指定了它们(wget默认使用http1.1),它们都显示GET在日志中,所以不是HEAD

wget --server-response --user-agent "foo" 'https://www.example.com/x.php?124'

HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Server: nginx/1.16.1
  Date: Tue, 03 Mar 2020 19:53:53 GMT
  Content-Type: text/html; charset=UTF-8
  Transfer-Encoding: chunked
  Connection: keep-alive
  X-Powered-By: PHP/5.4.16
  X-Accel-Expires: 3600
  Vary: Accept-Encoding
  X-Cache: MISS <<<<<<<<<<<<<<<<<<<<<<<<<< there

# repeating the request again with WGET will get …
Run Code Online (Sandbox Code Playgroud)

http nginx web-server cache http-caching

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

什么时候在服务器端使用鱿鱼?

所以我已经设置了 apache 来为我的 php 页面提供服务。

我读过鱿鱼,但不明白为什么/如何使用它来加速我的网络服务器。

据我所知,squid 位于同一个网络(或另一个)并缓存 Web 浏览器请求的内容,然后当另一个 Web 浏览器想要相同的页面时,squid 返回本地缓存的该页面,因此它永远不会向apache 服务器(客户端响应时间更快,服务器负载减少)。所以看起来squid是用于客户端(Web浏览器),与服务器端(apache)无关。

但是后来有些人告诉其他人他们是如何使用鱿鱼加速 apache 的。所以我很困惑。鱿鱼也可以在服务器端使用吗?它将如何运作?

linux proxy cache squid apache-2.2

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

在linux服务器上,如何知道DNS缓存过期时间是多长?

在linux服务器上,如何知道DNS缓存过期时间是多长?

谢谢

domain-name-system linux cache

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

如何防止网站首次加载启动缓慢?

我相信您已经注意到,对于许多服务器来说,如果您是几个小时的第一个访问者,则网站加载时间会很长。您知道为什么会这样吗(它只是服务器缓存吗?)以及如何使网站即使对于第一个访问者也能快速访问?在这种情况下,让我们采用正常的 LAMP 设置。谢谢你的帮助!

performance lamp web-server cache

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