nginx微型/缓存只有初级访问

时间:2016-12-30 18:53:57

标签: caching nginx

当我遇到以下问题时,我正在读取nginx微处理/缓存:是否可以缓存页面的第一次访问版本?

换句话说。我们运行高负荷,高资源的Magento。这当然有一个原因:网上商店是dynaimc&客户可以选择/过滤和购买东西。只有:不是第一个访问版本的网站总是一样的吗?

因此我的问题是:是否可以缓存页面的第一次访问版本?

  • 首次访问:显示针对速度版本优化的缓存(不存在会话)
  • 之后的每次访问:按原样显示Magento

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我在做一些奇怪的事吗?

el.1我在服务器块

之前设置了它
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=MAGENTO:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

el.2默认跳过缓存= 0在服务器块中设置它,如果找到会话cookie则跳过(因此在第一次访问后),如果查询或发布则跳过

set $skip_cache 0;

    if ($http_cookie ~* "frontend_cid|frontend|sid|adminhtml") {
     set $skip_cache 1;
    }

if ($request_method = POST) {
        set $skip_cache 1;
    }   
    if ($query_string != "") {
        set $skip_cache 1;
    } 

el.3使用php-fpm从缓存中读取服务器块中的位置匹配

location ~ \.php$ {
   try_files $uri =404;
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;

   fastcgi_cache_bypass $skip_cache;
   fastcgi_no_cache $skip_cache;

   fastcgi_cache MAGENTO;
   fastcgi_cache_valid  60m;

结果似乎是。第一次访问是没有Magento cookie设置的访问者,管理员或前端用户正在获得缓存版本。所有其他人都获得了正常的Magento版本。

简而言之:第一次访问=缓存版本,然后设置会话cookie(hmmm是会话cookie动态还是我们都得到相同的cookie?)。如果找到cookie,那么我们跳过缓存。