Articles of caching

是否真的有可能使用PHP会话与nginx fastcgicaching进行身份validation?

我最近把一个opencart实例从Apache + mod_php切换到了nginx + fastcgi + php-fpm。 我一直试图通过fastcgi-cachecaching大多数页面。 不幸的是,许多用户开始报告鬼命令或接pipe其他帐户(weeee !!!!)从彻底挖掘,似乎页面被caching与set-cookie! 因此,没有发送预先存在的会话cookie的后续用户正在获取caching启动器的会话cookie。 坏! 根据所有的文件那里,下面的设置应该是防止这种情况发生(至less我的理解:) fastcgi_pass_header Set-Cookie; fastcgi_pass_header Cookie; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; 当我通过单个caching看,我注意到几个页面与set-cookie:[somerandomsessionid]根据fastcgi_cache_valid下的nginx文档… 如果头部包含“Set-Cookie”字段,则不会caching这样的响应。 通过包含Set-Cookie与fastcgi_ignore_headers,我告诉它cachingset-cookie? 在许多例子中, Set-Cookie是fastcgi_ignore_headers参数的一部分。 还是应该防止Set-Cookie被处理,即使它明显在caching文件中? 以下是我的configuration的相关部分: 位置〜.php $ {… fastcgi_next_upstream error timeout invalid_header http_500 http_503; fastcgi_cache OPENCART; fastcgi_cache_bypass $no_cache; fastcgi_no_cache $no_cache; fastcgi_cache_purge $purge_method; fastcgi_cache_methods GET HEAD; fastcgi_cache_valid 200 5m; fastcgi_cache_use_stale error timeout invalid_header […]

Nginx不会减less最大年龄

我正在尝试将Nginx设置为运行在Unicorn上的Rails应用程序的反向代理。 我的应用程序有一些公共页面,我想caching60分钟的持续时间,所以我设置了最大年龄标题。 此外,我在Nginx的服务器块中添加了proxy_cache选项。 proxy_cache default; 并定义了这个caching proxy_cache_path /var/www/nginx_cache keys_zone=default:10m max_size=500m; 我已经build立了我的应用程序来添加这个头到我的可caching的响应 Cache-Control: max-age=3600, public 当客户第一次碰到页面时,页面被渲染并返回响应。 但是,在随后的请求中,nginx不会减lessmax-age计数器。 因此,访问者可能会在到期前一分钟访问我的页面,这意味着他正在看到59分钟的内容。 但是,将这个副本保存在他的浏览器中60分钟,然后才能得到一个新的副本。 我可以通过Nginx来减去所经过的时间,所以如果访问者点击一个已经在Nginxcaching中25分钟的页面,最大年龄将是35分钟(2100秒)?

清除caching对象,并在重新validation宽限期的过程中过期

我已经将Varnish 4.0添加到运行cPanel的CentOS 6服务器来caching我开发的网站。 我试图实现stale-while-revalidate以确保所有用户都获得一个页面的caching版本,这样,如果2分钟的max-age已经过期,返回一个陈旧的页面副本就足够了3个月期间,服务器将在必要时在后台重新生成caching对象。 返回的响应头示例如下: Accept-Ranges:bytes Age:539 Cache-Control:public, max-age=120, stale-while-revalidate=7889220 charset:utf-8 Connection:keep-alive Content-Length:54511 Content-Type:text/html; charset=utf-8 Date:Mon, 14 Sep 2015 12:52:00 GMT Expires:Mon, 14 Sep 2015 12:54:01 GMT grace:7889220s Pragma:cache X-Cache:HIT X-Cache-Hits:2 这个机制似乎有效。 在上面的情况下,返回一个caching副本,并且下一个请求正确地返回Age值设置为10的副本,例如(自caching在后台重置后已过去10秒)。 但是,在将来的某个时间点(以小时为单位),对同一页面的请求会导致caching未命中,并且该页面直接触发后端,并且响应标头指示的Age为0。不能告诉为什么陈旧的副本不被返回。 我没有Varnish的经验,而且我正在使用Mattias Geniar的示例Varnish 4.0模板的一个版本,对于Craft CMS (一个构build网站的PHP CMS)进行了修改。 VCL文件中是否有可能导致caching未命中的内容,或者这可能是服务器configuration问题?

在dm-cache之上的lvm PV

我正在运行一个私有云(opennebula,KVM),在这里我直接使用LVM逻辑卷并在文件系统上使用磁盘映像(一个速度更快,另一个更容易迁移),所有这些都在raid5之上。 我设法购买了一些SSD,我可以把它放到我的服务器上,我想用它们作为caching,很可能使用DMcaching(因为bcache需要重新格式化磁盘,而flashcache仍然不是主线)。 现在,我想要caching多个LV,我可以为每个LV创build单独的元数据和caching分区,或者我可以创build一个新的LV,将dm-cache放在其上,然后将其用作PV,并将先前LV一个接一个。 所以分层结果是: md1 == sda + sdb + sdc + sdd PV0 == md1 LV0 < – PV0(我打算离开宿主操作系统的卷未caching) PV1 == LV0 + dmcache ( LV1 , LV2 , LV3 ,…)< – PV1 所以我的问题是: 这有道理吗? 🙂 对于额外的LVM层是否有显着(> 5%)的性能损失? 在这个设置中是否有一个固有的不兼容问题,我应该知道?

使用caching文件mtime作为Last-Modified标题值

在nginx 1.10.1我代理外部网站(不在我的控制之下)在本地caching图像。 我的configuration如下: location ~ /cachedimages/(?<productcode>.*)/(?<size>.*)/image.jpg { resolver 127.0.0.1; proxy_pass https://www.externalsite.example/api/getImage/?productcode=$productcode&size=$size; proxy_cache imgcache; proxy_cache_valid 200 1d; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; expires 1M; access_log off; add_header 'Cache-Control' "public"; add_header Last-Modified $upstream_http_last_modified; add_header X-Proxy-Cache $upstream_cache_status; } imgcache定义如下: proxy_cache_path /var/cache/nginx/imgcache levels=1:2 keys_zone=imgcache:10m max_size=1g inactive=24h; 远程服务器不会提供Last-Modified标头: curl -X GET -I https://www.externalsite.example/api/getImage/?productcode=abc123&size=128 HTTP/1.1 200 OK […]

Linux – 磁盘/文件系统作为LRUcaching(透明到期)

我有一个情况,我想要使用本地磁盘作为从单独的Web服务(类似S3)(热)文件的LRUcaching。 如果文件不存在于磁盘上,则通过互联网读取文件,写入本地磁盘,然后未来的请求可以使用本地caching而不是从原始源读取。 由于存储在Web服务中的数据量将超过本地存储,因此,如果存储已满,则在写入新文件时,我希望自动清除本地文件。 如果可能的话,我想避免这样的情况,即我有一个cron任务,在一定时间后检查atime和过期文件,因为如果没有文件正在写入,没有特别的理由会根据时间过期caching项目。 我试过find类似tmpfs的东西,它允许我像使用caching的应用程序一样,尽可能透明地实现类似于纯磁盘支持的caching(在SSD上),但是我一直无法find实现此function的任何东西(类似于CacheFS为NFS所做的,但是以更一般的方式)。

文件特定的cachinghttp头为IIS 6

有没有办法在II6中为特定的文件types设置caching相关的头文件? 我们希望在这里closures所有* .js和* .css文件的caching,但IIS6迫使我们做一个全部或全部的方法。

Squid实用程序命令强制从本地硬盘caching加载?

是否有一个Squid实用程序命令强制从本地硬盘caching加载? xww.example.com / w / x / y / z 阿帕奇 ———————— 互联网连接速度慢 ———————— lan1 | lan2 | LAN3 | | caching| caching| 高速caching / x / y | / x / z | / y / z 鱿鱼| 鱿鱼| 乌贼 —— | —— | —— 浏览器| 浏览器|浏览器 浏览器| 浏览器|浏览器 浏览器| 浏览器|浏览器 浏览器| 浏览器|浏览器 例如,将USB硬盘驱动器插入运行Squid的lan1上的计算机上。 […]

创build/删除子域名时出现奇怪的行为

这可能是来自本地机器的DNScaching问题,但我不确定。 这是发生了什么事。 我有一个不使用通配符子域的域,所以必须创build它们。 没有创build域,我指向我的浏览器test.domain.com,我找不到页面服务器。 现在,当我创build子域名时,我一直得到同样的问题。 现在,当我第一次创build域,而没有访问过的页面,我得到了正常的页面,但现在当我删除子域,它永远不会消失。 这可能是一个DNScaching问题,我正在共享环境,也许路由器有一个caching,但我怀疑。 这可以与我的设置有关吗? 我曾尝试使用Google DNS托pipe ,但是这给了我相同的结果。 我也尝试了一些清除本地DNScaching的工具,它们是FireFox的一些附件。 任何人有任何想法可能是什么问题。 是否有任何testing我可以做,看看我和服务器之间是否有某种caching。

如何利用光油进行A / Btesting和function展示?

今天,我们有我们的networking层暴露在世界上。 我们希望在我们的Web层前添加Varnish以加速网站并减less对后端的呼叫。 但是,我们有一些担忧,我想知道大多数人如何接近他们: A / Btesting – 如何testing每个页面的两个“版本”并进行比较? 我的意思是,清漆如何知道哪个页面提供服务? 如果和如何保存每个页面上的单独版本? function部署 – 您将如何设置一个简单的function部署机制? 比方说,我想打开一个新的function/页面只是10%的stream量,然后再增加到20%? 你如何处理代码部署? 您是否在每个部署中清除整个清漆caching? (我们每天部署)。 或者你只是让它慢慢过期(使用TTL)? 任何有关这些问题的想法和例子, 非常感谢!