سؤال

وأواجه مشكلة مع بلدي memcached_keys $ كونه وقتا طويلا في ملف .conf بلدي لإنجن إكس. أنا باستخدام وحدة أعطها لكن بعض عناوين المواقع بلدي هي فترة طويلة جدا. أنا في عملية محاولة لتجزئات MD5 المستخدم من عناوين المواقع بدلا من ذلك ولكن في غضون ذلك كنت أتساءل فقط إذا كان هناك طريقة يمكن أن تحقق على طول سلسلة المخزنة في متغير.

وهكذا:

set $memcached_key "byp-$uri";
if ($args) {
    set $memcached_key "byp-$uri?$args";
}

if (len($memcache_key) < 250) {
     memcached_pass 127.0.0.1:11211;
     error_page 404 = @cache_miss;
     error_page 502 = @cache_miss;
}
else {
    pass to @cache_miss;
} 
هل كانت مفيدة؟

المحلول

وأنا لست إيجابية، ولكن لا أعتقد أنه يمكن القيام به داخل لغة إنجن إكس التكوين. وأظن أنه سيتم توثيق هنا إذا كان موجودا، وأنا لا أرى أي شيء.

نصائح أخرى

وقديم السؤال ولكن ....

لقيام هذا النوع من الشيء، كنت في حاجة الى إعداد البرمجة مثل وحدة لوا:

location / {
    set_by_lua $memcached_key '
        if not ngx.var.args then 
            return "byp-" ..  ngx.var.uri
        else 
            return "byp-" ..  ngx.var.uri .. "?" ..  ngx.var.args
        end
    ';
    content_by_lua '
        local string = string;
        if string.len($memcached_key) < 250 then
            ngx.exec("/memcached");
        else
            ngx.exec("/cache_miss");
        end
    ';
}
location /memcached {
    internal;
    memcached_pass 127.0.0.1:11211;
    error_page 404 = /cache_miss;
    error_page 502 = /cache_miss;
}
location /cache_miss {
    internal;
    ...
}

وتشير مواقع "الداخلية" بدلا من مواقع نشر اسمه نظرا لعدد قليل من المراوغات مع المواقع الأخيرة لكن اسمه يمكن أن تستخدم أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top