标签: cache

如何配置 nginx 以从 RAM 提供静态内容?

我想将 Nginx 设置为我的 Web 服务器。我想将图像文件缓存在内存 (RAM) 而不是磁盘中。我正在提供一个小页面,并希望始终从 RAM 提供一些图像。我不希望为此使用 Varnish(或任何其他此类工具),因为我相信 Nginx 能够将内容缓存到 RAM 中。我不确定如何为此配置 Nginx?我确实尝试了一些组合,但没有奏效。Nginx 一直使用磁盘来获取图像。

例如,当我尝试使用 Apache 基准测试使用以下命令进行测试时:

ab -c 500 -n 1000 http://localhost/banner.jpg
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

socket: Too many open files (24)
Run Code Online (Sandbox Code Playgroud)

我想这意味着 Nginx 试图从磁盘同时打开太多文件,而操作系统不允许此操作。任何人都可以建议我正确的配置吗?

nginx cache memcache

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

不规则的互联网中断:某些图像和 JS 未加载

第一次在 ServerFault 上,我有一个很好的小难题。

几个月以来,我们的互联网连接一直存在问题。

环境:

Servers: 2 Terminal Servers as an RDSFarm running Windows Server 2008 R2
Browser: Internet Explorer 9
Test/debug browser: Chrome
AntiVirus: Avast 7.0.1455
Run Code Online (Sandbox Code Playgroud)

问题:

网站会不定期地拒绝加载,并显示无法访问该页面或某些图像无法完全加载的错误消息。此外,在检查多个 .js 文件后无法加载。

在此处输入图片说明

结果和我们尝试过的:

第一印象:

当我在这段时间内使用 Chrome 时,该站点在刷新后返回 net::Error 101 或 Error 103。在其他时候,如果它没有给出错误,则多个图像不可见并显示 X 图像。IE 只是说页面无法显示。

在此处输入图片说明

使用 Chrome 开发者工具:

它在控制台中显示多个资源不可用,但是当我右键单击丢失的图像并选择“显示图片”时,它们会显示。当我通过直接 URL 打开图片时,它们也会显示。

在此处输入图片说明

通过 Chrome 开发者工具审核:

当页面处于错误状态时,我对其进行了审核,发现一些 .js 文件与一些 .png、.jpg 和 .gif 文件没有一起加载。Chrome 和 IE 加载不同的图像。

在此处输入图片说明 在此处输入图片说明

混淆的 JS 文件和 Avast:

在检查之后,我发现大多数 .js 文件都是经过混淆的 JS 文件,而且由于我们运行的是 Avast 7.0.1455,我想知道 Web Shield 是否没有搞砸。

再说一次,它只发生在第一个 TS 上,而不是第二个。 …

internet terminal-server cache windows-server-2008-r2 rds

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

sssd 和 ldap 身份验证缓存

在我们运行 OpenSUSE 12.2 的机器上,我们已经安装了 OpenLDAP 和sssd守护进程。我们正在使用这两个服务进行用户身份验证。最近我们创建了一个脚本,它动态地为我们的虚拟主机创建新的网络用户,但现在我们正在处理一个问题。

sssd 似乎使用了某种缓存,并在getent passwd此期间返回已从 LDAP 中删除的用户。有时它不会立即返回最近创建的用户,因为它在脚本中是必要的(用于使用setfacl和设置权限chown)。

重新启动 LDAP,sssd或者nscd没有帮助,也没有使用sss_cache -U. 我们尝试降低配置中的缓存,sssd但似乎没有任何影响。

在将新用户添加到 LDAP 或完全禁用缓存后,我们需要以某种方式显式刷新缓存。

有没有人遇到过类似的问题?

ldap cache latency sssd

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

Linux; 什么是 stripe_cache_size,它有什么作用?

我目前正在使用mdadm实用程序在 Linux 下构建软件 RAID ,我已经阅读了一些文章,这些文章描述了如何增加该 RAID 的 stripe_cache_size 值以及如何计算合适的 stripe_cache_size 值。

我已将我的速度提高到 16384,我当前在 /proc/mdstat 中的新 RAID5 上的同步速率已从 71065K/秒跃升至 143690K/秒(翻倍!),这是个好消息。我还看到 RAM 使用量的匹配和预期增加,但是我找不到任何关于此设置的作用及其工作原理的文档。

它似乎是存在于 RAM 中的 RAID 的某种缓存。这就是我从它的名字和改变它所看到的效果所能知道的。是否有任何关于此设置及其描述的官方“Linux”文档?

linux cache mdadm

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

如何为 LAN 中的客户端计算机创建 Yum 缓存服务器

就像在 Ubuntu 中一样,我们可以选择创建“Ubuntu 更新缓存服务器”,它直接从 Internet 下载和更新软件包,并为其他客户端 ubuntu 机器提供安装/更新软件包的服务。对于基于 RHEL 的发行版(Centos、fedora),我们可以以同样的方式创建“更新缓存服务器”,它从 Internet 获取软件包并在本地提供给 LAN 中的客户端机器。也像 ubuntu 一样,缓存服务器为所有版本的 centos、fedora 等提供服务.

centos cache update packages

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

在 htaccess 中放置规则的顺序是否重要?

我希望这是一个简单的“是”或“否”答案(请说明原因)

Q1:规则在 htaccess 中的放置顺序有关系吗? 由于它们是完全分开的项目:例如

Q2:如果是,我是否应用了正确的顺序? 为了加速 htacces 引擎而不是用不必要的规则使其过载?

Q3:关于在此处禁用/添加什么的任何提示都非常欢迎+1!


# DirectoryIndex index.php /index.php
AddDefaultCharset UTF-8
RewriteEngine on
# Options All
# Options +FollowSymLinks
# Options +FollowSymLinks -Indexes -ExecCGI
# RewriteBase /

#####################################################

<IfModule mod_headers.c>
    ExpiresActive On
    ExpiresDefault M172800
    Header unset ETag
    FileETag None
    Header unset Pragma

    ##### STATIC FILES
    <FilesMatch "\\.(ico|jpg|png|gif|svg|swf|css|js|fon|ttf|eot|xml|pdf|flv)$">
        ExpiresDefault M1209600
        Header set Cache-Control "public, max-age=1209600"
    </FilesMatch>

    ##### DYNAMIC PAGES
    <FilesMatch "\\.(php)$">
        ExpiresDefault M604800
        Header set Cache-Control "public, max-age=604800"
    </FilesMatch>
</IfModule>

#####################################################

#  /page123 and /page123/ will …
Run Code Online (Sandbox Code Playgroud)

cache .htaccess apache-2.2

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

阻止 IIS 7.5 在错误代码上发送 Cache-Control Max-Age

我有一些带有缓存控制Max-Age标头的静态内容,因此客户端将缓存静态内容。但是,当有错误响应建议客户端缓存它时,IIS 7.5 仍会发送此标头。

具有负面影响,某些代理将缓存该错误响应。我可以,Vary: Accept,Accept-Encoding但这并没有真正解决Max-Age错误响应的根本问题。

当前相关的 IISweb.config部分是:

<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
    </staticContent>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

有没有办法让我可以做到这样我们就不会告诉客户端或代理缓存 400/500 错误代码?

iis http cache iis-7.5

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

如果大小不变,Vagrant NFS 共享不会显示更新的文件

在 NFS 上挂载 /vagrant 时,如果大小没有改变,主机上已更改的文件不会在来宾上刷新。除非我对大小进行足够的修改以使其不同,否则不会立即反映快速更新/错别字。

我试图设置 lookupcache=none 但除了让一切变慢之外,没有任何改变。

我使用 OSX ML 作为主机,使用 Arch Linux 作为来宾。NFS 是 v3(因为 OSX)。

nfs virtualbox cache arch-linux vagrant

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

为什么 Apache 发送 200 OK 而 Last-modified 匹配 If-modified-since?

我试图对我的缓存策略有一个基本的行为:文件应该被缓存,并且每次都与服务器重新验证。所以我希望 Apache 发回 304。

这是每次浏览器刷新时发生的对话框:

Status Code:200 OK

Request Headers

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie: ...
Host:...
If-Modified-Since:Tue, 14 Oct 2014 15:10:37 GMT
If-None-Match:"1461-505636af08fcd-gzip"
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36

Response Headers

Accept-Ranges:bytes
Cache-Control:No-cache
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:1412
Content-Type:text/html
Date:Tue, 14 Oct 2014 16:58:05 GMT
ETag:"1461-505636af08fcd-gzip"
Keep-Alive:timeout=5, max=99
Last-Modified:Tue, 14 Oct 2014 15:10:37 GMT
Server:Apache/2.4.6 (Ubuntu)
Vary:Accept-Encoding
Run Code Online (Sandbox Code Playgroud)

(这是来自 chrome devtools,未选中禁用缓存)

您可以看到响应包含 Cache-Control:No-cache 标头,并且 If-modified-since 标头与 Last-modified 相匹配。ETag 也匹配。

在这种情况下,Apache 不应该发送 304 吗?

编辑

在 apache 中禁用 …

cache last-modified apache-2.4

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

如何向 apache 和 nginx 服务的所有 404 页面添加无缓存标头?

我最近在切换到 Cloudflare 后遇到了一个问题,解决方案是基本上阻止 Cloudflare 缓存 404 响应。

在我们的负载平衡多服务器设置中,偶尔会发生 404,但它们会被 rsync(通过 lsyncd)快速修复。在 Cloudflare 之前,对 404ed 文件的重新请求将很快变为 200,因为 rsync 完成其工作。

但是,由于 Cloudflare 根据缓存标头缓存所有数据,并且 apache 和 nginx 都不会发送 404 的 no-cache 标头,因此 Cloudflare 最终会缓存 404 响应一段时间。

我一直在寻找一种解决方案,以在 apache 和 nginx(全球范围内,对于所有托管域)中为 404s 全局添加此类标头,但到目前为止还没有找到。

任何人都可以帮忙吗?

谢谢你。

nginx cache http-headers http-status-code-404 apache-2.2

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