Articles of caching

在Nginx上永久在内存中caching一个静态文件?

我有一个在Docker容器中运行的Nginx,它提供了一些静态文件。 这些文件在运行时永远不会改变 – 如果它们确实发生了变化,容器将被停止,图像将被重build,并且一个新的容器将被启动。 所以,为了提高性能,如果Nginx从磁盘中只读取一次静态文件,然后永远从内存中将其从服务器中读取出来,那将是完美的。 我find了一些configuration选项来configurationcaching,但至less从我所看到的都没有提供这种“永远”的行为,我正在寻找。 这可能吗? 如果是这样,我该如何configurationNginx来实现呢?

NginxcachingREST API

我们有一个移动应用程序调用REST API来获取在移动主屏幕上显示的图块列表。 身份validation机制是使用我们唯一标识用户的AUTH令牌。 菜单不断变化,取决于应用程序的版本。 为此,我们有两种方法。 /api/tilemenus (仅传递validation标题而不是版本) 检索auth头并在db表中查找应用程序的版本(我们也将用户版本存储在数据库中,并在用户升级应用程序时进行更新)并相应返回数据。 /api/tilemenus/1.2.2 (由于客户端知道它自己的版本,所以/api/tilemenus/1.2.2传递auth头文件和版本) 在这里,因为版本在REST请求本身中传递,所以不需要数据库查找。 哪种方法更好? 我认为方法2更好,因为我们可以传递caching头来caching每个版本的API。 对于方法1,当用户升级应用程序时,没有隐含的方式来放弃这个caching。

从auth_requestcaching令牌

我想从我的请求头字段授权caching令牌。 Authorization : Bearer abcdefghijklmnopqrstuvwxyz 我的目标是,我不必validationvalidation服务器上的每个请求。 如果授权令牌被caching(并且有效),则请求应该在没有validation的情况下调用API。 location /main { auth_request /auth; proxy_ignore_headers Cache-Control; proxy_pass http://API; proxy_http_version 1.1; } location /auth { internal; proxy_cache my_cache; proxy_ignore_headers Cache-Control; proxy_cache_key "$http_authorization"; proxy_pass https://validationserver; proxy_pass_request_body off; proxy_set_header Content-Length ""; } 这是我的设置,但这不起作用。 我希望你能帮助我。 问候!

Nginx的add_header和caching控件

当您在nginx中使用add_header指令时,头将被添加到来自原始服务器的响应中。 说起源服务器返回caching控制公共,最大年龄= 60。 但在nginx的反向代理位置,你设置了一些东西: add_header cache-control public,max-age = 10 这到底是做什么的? 有两种不同的情况我可以想到: 1)Nginx尊重来自源服务器的caching控制头,并将内容存储在caching中,过期60秒。 然后用覆盖的头传递响应,导致客户端将资源存储在caching中,并过期10s。 要么.. 2)Nginx首先覆盖响应头,然后解释它们。 它存储资源的期限为10秒,并将响应传递给客户端,同时caching该客户端,并过期10秒。

Google PageSpeed不更新caching

我在这里安装了google的pagespeed,并安装了nginx服务器。 我需要刷新/删除以前的caching内容,但找不到解决scheme。 在pagespeed网站上提到使用这个命令: touch /var/ngx_pagespeed_cache/cache.flush 但是我没有成功。 谢谢你的帮助。

使用Nginx和Etags进行服务器端dynamic内容caching

我有一个CouchDB数据库,在它前面有一个Nginx反向代理。 CouchDB的一些响应需要很长时间才能生成(是的,这是一个不好的select,但是现在需要坚持下去),我想用Nginxcaching它们。 (目前Nginx只能使用SSL。) CouchDB支持Etags,所以理想情况下,我希望NginxcachingEtags以及哑客户端。 客户端不使用Etags,他们只是查询Nginx,Nginx使用caching的Etag进入CouchDB,然后将caching的响应或新的响应发送回客户端。 基于文档的理解是,Nginx目前无法做到这一点。 我错过了什么吗? 有没有支持这种设置的替代scheme? 或者唯一的解决办法是手动使Nginxcaching无效?

正则expression式来查找匹配文件扩展名的文件,除非文件名包含string

我有caching启用nginx中的特定文件,如下所示: location ~* \.(?:css|js)$ { access_log off; add_header Cache-Control "no-transform,public,max-age=31536000,s-max-age=31536000"; expires 1y; } 我想在这里做的是排除所有匹配模式i18n – *。js的文件,并因此caching除i18n之外的所有.js文件。 我试图做一个负面的查找来排除这个模式,但是由于没有捕获组,它不能工作: location ~* \.(?!i18n-.*\.js)(?:css|js)$ { access_log off; add_header Cache-Control "no-transform,public,max-age=31536000,s-max-age=31536000"; expires 1y; } 这里有什么聪明的解决scheme? 我不是正则expression式的专家,所以简单的解释也是有帮助的。

让nginxcaching文件只取决于文件名(而不是完整path)

这个问题只是关于cachingnginx,而不是caching头和浏览器caching。 我正在运行一个应用程序,显示表单的URL上的项目的详细信息 http://my-server/details/<id>/ 其中id是项目的唯一标识符。 虽然生成的HTML页面是自动生成的,并且对项目来说是唯一的,但该页面相对包含其他JavaScript和CSS文件。 这些文件是静态的, 不依赖于项目ID。 应用程序非常慢,我希望nginxcaching任何可能的。 nginx充当反向代理。 是否有可能将所有.js和.css子请求的proxy_cache_key属性设置为只有文件名(省略了url中的id)? 例如: 之后首先访问http://my-server.tld/details/abc/style.css ,之后访问http://my-server.tld/details/def/style.css应该导致caching命中。 但是之后访问http://my-server.tld/details/abc/和http:// my-server / details / def /不应该(生成的HTML取决于id)。 这就是我所想的基本configuration server { listen 80; server_name my-server.tld; location / { # root, doesn't matter } location /details { # request to non-asset, cache as usual } location ~ ^/details/[a-z0-9]+/[a-z0-9]+\.(js|css)$ { # request to static asset, […]

Nginxcaching – 图像,获得404

我试图设置nginxcaching静态文件,如图像,CSS和JS。 这是我的conf。 server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /var/www/site; index index.html index.htm; } location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 […]

configurationnginx静态caching某些URL

我想通过查找静态文件直接在我的应用程序caching某些URL。 但是,静态caching的文件可能不存在,所以我只想redirect请求,如果文件存在。 我想我可以使用try_files来做这件事,但到目前为止,我还没有成功地做到这一点。 这是我的尝试: location ^/(.*)/(.*)/other/stuff/(.*)/this-is-static { try_files /static-cache/$1/$2/$3/this-is-static @app; } static-cache是在同一文件中configuration的内部位置。 这似乎没有按预期工作。 怎么了? 我得到的最接近的是这个,它重写了每一个请求(当文件没有被caching时失败): location ^/(.*)/(.*)/other/stuff/(.*)/this-is-static { rewrite ^ /static-cache/$1/$2/$3/this-is-static; }