我正在尝试将Apache设置为具有caching的转发代理,但似乎没有正常工作。 获得Apache作为一个转发代理是没有问题的,但是不pipe我做什么,它都不会caching任何内容到磁盘或内存。 我已经检查过,确保mods_enabled目录中没有任何与mod_cache冲突(最终将其全部注释掉),并且我尝试将所有与caching相关的字段移动到mod_cache的configuration文件中。 另外,我为caching请求设置了日志logging,但是没有任何内容正在写入这些日志。 下面是我的Apacheconfiguration,任何帮助将不胜感激! <VIRTUALHOST *:8080> ProxyRequests On ProxyVia On #ErrorLog "/var/log/apache2/proxy-error.log" #CustomLog "/var/log/apache2/proxy-access.log" common CustomLog "/var/log/apache2/cached-requests.log" common env=cache-hit CustomLog "/var/log/apache2/uncached-requests.log" common env=cache-miss CustomLog "/var/log/apache2/revalidated-requests.log" common env=cache-revalidate CustomLog "/var/log/apache2/invalidated-requests.log" common env=cache-invalidate LogFormat "%{cache-status}e …" # This path must be the same as the one in /etc/default/apache2 CacheRoot /var/cache/apache2/mod_disk_cache # This will also cache local […]
我正在寻找类似于Varnish的IIScaching。但是作为Varnish不推荐在Windows上,我想有什么其他的select,可用于ASP.net web应用程序的性能优化,与Varnish相似且function强大的网站。
在我们的服务器上,我们已经configuration了http响应头,如下所示: Cache-Control:max-age=28800, must-revalidate # (8 hours) Connection:Keep-Alive Date:Wed, 24 Apr 2013 21:36:19 GMT ETag:W/"173520-1366833451000" Expires:Thu, 25 Apr 2013 05:36:19 GMT # (8 hours from access) Keep-Alive:timeout=15, max=484 Server:Apache-Coyote/1.1 Vary:Accept-Encoding,User-Agent 我们的意图是资源被浏览器caching8个小时,然后浏览器在使用caching副本之前应该检查它是否被修改过(有304请求)。 不过,我发现浏览器总是做一个304 。 (它继续使用它的caching副本,但在此之前检查服务器是否有修改 – 我想在8小时后发生,而不是所有的时间。 正如我认为它应该工作, Cache-Control:max-age=28800, must-revalidate应该指示客户端使用caching的资源,直到它在caching中达到max-age ,之后它must-revalidate与原始服务器must-revalidate 。 我相信Expires指令更像是一个后备,而Cache-Control取代了 – 但是如果它在起作用,我希望浏览器在到期date之前使用caching副本,然后获取新的副本。 大部分是从这篇文章中收集的,仔细阅读规范。 显然,我的理解是不完整的 – 我错过了什么? 编辑:我错误地认为通过刷新当前页面,我将testing当浏览器转到具有相同资源链接的后续页面时会发生什么。 我错了 – 点击“刷新”button通常似乎强制浏览器检查在使用caching副本之前是否有任何资源已被修改, 这非常明显 。 当我点击到其他页面时,资源就像预期的那样直接从caching中取出。
我知道我的设置有点疯狂,但无论…. 我在Openshift上设置了Nginx来caching地图查看器(对于地图查看器,您可以猜测目的:-)),这些地图查看器是从我的家庭networking(具有有限的带宽(愚蠢的无线连接!))提供的。 Openshift给我无限的带宽和1 GB的磁盘,这应该足以caching地图的stream行部分。 但是,地图查看器喜欢这样的请求: http://localhost/tiles/world/t/-1_0/-27_23.png?1381358434308 这使得nginx认为这个文件是不可caching的! 我已经做了一些Googlesearch,但是因为我在阅读和编写正则expression式时非常可怕,所以我想请求(从你这里)让nginx忽略.png文件的查询string,并且只提供没有请求参数。 以下是服务器configuration的相关部分: http { proxy_cache_path ${OPENSHIFT_RUNTIME_DIR}/cachefile levels=1:2 keys_zone=my-cache:599m max_size=700m inactive=250m; proxy_temp_path ${OPENSHIFT_RUNTIME_DIR}/cachefile/tmp; include mime.types; default_type application/octet-stream; # Format for our log files log_format main '$remote_addr – $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; keepalive_timeout 5; access_log ${OPENSHIFT_LOG_DIR}/access.log; port_in_redirect off; server_tokens off; tcp_nopush on; […]
一个非常常见的解决scheme是执行以下操作: <ifModule mod_headers.c> FileETag None Header unset ETag Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" Header set Pragma "no-cache" Header set Expires "Thu, 01 Jan 1970 00:00:01 GMT" </ifModule> 我希望他们被caching,但我也希望他们在我们重新部署时失效。 我想我需要重新启用ETag,然后当我们重新上传文件“触摸”他们,所以时间戳将读取当前时间,他们会得到一个不同的ETag。 我有点从我从这个答案阅读: https://stackoverflow.com/questions/499966/etag-vs-header-expires 这听起来正确吗?
query_cache_size看起来就像人们通常想要启用的那种设置,因为它默认为0所以我感到困惑。 然后我从MySQL文档中阅读以下关于query_cache_wlock_invalidate设置 通常,当一个客户端在MyISAM表上获得一个WRITE锁时,如果查询结果存在于查询caching中,则其他客户端不会发出从该表读取的语句。 将此variables设置为1将导致获取表的WRITE锁,以使查询caching中引用该表的任何查询无效。 这会强制其他尝试访问该表的客户端在locking生效时等待。 它没有提到InnoDB引擎。 当Innodb在行/表上写入locking时,此设置是否也会阻止从caching中读取数据?
当我使用ntpdate ntp.ubuntu.com来同步我的服务器时钟时,发生nginXcaching的问题。 现在,当我请求pathhttp://www.example.com/project/create我收到了我正在处理的旧的PHP文件。 我尝试在nginx.conf中将sendfile设置为off ,甚至在cloudFlare为我的DNSclosurescaching,但没有成功。 当我看着头部分curl -I http://www.example.com/project/create我有以下的回应: HTTP/1.1 302 Moved Temporarily │ Server: nginx │ Date: Fri, 15 Aug 2014 10:51:38 GMT │ Content-Type: text/html │ Connection: keep-alive │ Set-Cookie: PHPSESSID=cihsfrq6aoat5baun8dem01go5; path=/ │ Expires: Thu, 19 Nov 1981 08:52:00 GMT │ Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 │ Pragma: no-cache │ Location: http://www.example.com/site/login 我找不到任何nginxcaching文件夹要删除。 […]
我有我自己的VPS与CentOS 6和Nginx,我想启用caching。 要testing它,如果启用成功,我使用Google PageSpeed Insight。 我的问题是,我没有太多的经验,我必须启用caching,我可以设置多长时间的图像caching等等。 多数民众赞成在互联网上发现,并尝试到目前为止: 创build目录: /etc/nginx/sites-available和/etc/nginx/sites-enabled因为它们不存在。 在这里链接创build的目录: /etc/nginx/nginx.conf添加include /etc/nginx/sites-enabled/*; 在文件的末尾,但在最后} 创build文件/etc/nginx/sites-available/my-site.com.conf : server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 15d; } location ~* \.(pdf)$ { expires 30d; } } 链接conf文件: ln -s /etc/nginx/sites-available/my-site.com.conf /etc/nginx/sites-enabled/my-site.com.conf 做service nginx restart 我用我的网站的WordPress。 因此,无论何时使用PageSpeed […]
我反复在我的nginx日志中看到这个错误: [crit] 30165#0: ngx_slab_alloc() failed: no memory in cache keys zone "api-data-cache" 看看用于caching关键区域的目录,我可以看到它在326MB标记附近徘徊: du -s /usr/local/nginx/cache/ 326652 然而,我的nginx.conf指定1GB的max_size ,这意味着应该有足够的空间: proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=api-data-cache:8m max_size=1g inactive=600m; proxy_cache_key "$scheme$host$request_uri/$device_type$cookie_w3tc_referrer"; proxy_cache_use_stale updating timeout http_500 http_502 http_503 http_504; proxy_ignore_headers X-Accel-Expires Expires Cache-Control; 这里可能会发生什么? 有大量的磁盘空间可用(> 50GB的免费),并没有find任何相关的文件 ,我有点损失。
我们的组织将人员送到偏远地区45-90天。 这些地点的用户需要在域计算机上使用客户端软件才能完成这项工作。 最近我们遇到了一个问题,就是我们不得不在远程位置replace一个用户,并在新用户从未login到站点的域计算机时遇到问题。 我的问题是否有任何方法来validation用户到一台脱机的域计算机,当用户没有cachingconfiguration文件? 我们不允许使用本地帐户,必须使用带有PIN码的智能卡login(无用户名密码login)。