问题描述
最近在学习nginx,很多问题不明白,请教各位大鸟们帮忙解答!!!问题1 使用nginx做web缓存,举个例子:将响应的html缓存到内存里,下次相同的URL访问的时候,nginx服务器判断缓存中是否存在以及是否过期失效,如果存在不失效就返回此html。我的理解正确吗?是一定要保存到内存里吗?过期时间在nginx里配置,会不会与html页面里的meta缓存设置冲突呢?问题2:有段nginx的配置如下,不知道是什么意思server{....location ~ .*.(gif|jpg|jpeg|png|bmp|swf)${ expires 30d;}}它的意思将这些访问的资源缓存到nginx里吗?30天有效期?问题3:我用httpwatch查看如图:这个图片的result是Cache,是不是说明图片也缓存到nginx服务器里呢?一般做web缓存,图片、js、css也放入缓存中呢?问题4 一般网站有CMS生成html放到nginx服务器html目录下(我自己猜想的),这个与nginx缓存html没有关系吧?我没做过大型网站,对此很多没有经验,希望大鸟们能踊跃发言!某网站是 nginx+apache+resin,有经验的大鸟们,知道它们的任务是什么吗?我个人猜想是nginx做方向代理与web缓存,apache做负载均衡,不知道对不对,。。。。。
解决方案
问题1 ,NGINX 将缓存放在proxy_cache 文件中 proxy_cache_path /se/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=3g;NGINX更依靠ETAG/Cache-Control/Expires/Last-Modified 这样的HTTP head 来控制 缓存的生命期问题2:expires 30d; 是告诉浏览器,三十天内不用再来获取资源问题3:这个CACHE 是浏览器内部的cache。问题4: CMS 将 动态内容用文件保存下来,是在没有外部缓存的情况下的做法。 NGINX 的缓存 控制太复杂,客户端可以强制透过缓存获取内容,给网络带来不安全因素。我现在就吧访问量大的页面,比如首页静态化,极大地提高了抗压能力。 nginx完全可以做做代理、web缓存、做负载均衡,我现在就是 NGINX + RESIN 直接使用。估计原来是APACHE+RESIN,APACHE做静态文件访问用。增加NGINX 只做了负载均衡。也算是对原有结构改变较小的方案。
解决方案二:
我不知道你用的是html的还是jsp的如果是html的,你可以用cookie如果是jsp的,你可以用request,sesssion,application这些都可以实现缓存机制