Python/flask yanıtlarını memcached ile önbelleğe almaya çalışıyorum. Daha sonra nginx kullanarak önbelleğe hizmet etmek istiyorum. o html kodu öneki getirilir önbellekten çeker, ancaknasax flask ve memcached ile bazı bozuk karakterler döndürüyor
server {
listen 80;
location/{
set $memcached_key "request:$request_uri";
memcached_pass 127.0.0.1:11211;
error_page 404 405 502 = @cache_miss;
}
location @cache_miss {
uwsgi_pass unix:///tmp/uwsgi.sock;
include uwsgi_params;
error_page 404 /404.html;
}
}
:
from flask import Flask, render_template
from werkzeug.contrib.cache import MemcachedCache
app = Flask(__name__)
cache = MemcachedCache(['127.0.0.1:11211'])
@app.route('/')
def index():
index = cache.get('request:/')
if index == None:
index = render_template('index.html')
cache.set('request:/', index, timeout=5 * 60)
return index
if __name__ == "__main__":
app.run()
ve şuna benzer bir nginx sitesi yapılandırması: Ben şuna benzer şişesi kodunu kullanıyorum Bir V ile, \ u000a karakterleri (satır beslemeleri) ve bozuk yerel karakterler içerir ve "p1" ile eklenir. örneğin: Content-Type varlık rağmen
V<!doctype html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\u000a<head>\u000a <meta http-equiv="content-type" content="text/html; charset=UTF-8" />\u000a <meta http-equiv="content-language" content="no">\u000a\u000a <title>
[...]
\u000a\u000a</body>\u000a</html>
p1
.
"text/html; charset = utf-8". Sözde V [...] p1. şey, bir şeyi kodlayan parçalanmış aktarımla, yanıt başlığında bulunmayan bir bayrakla ilgili bir şey olabilir. Ne yapmalıyım?
Tamam, ben de yarı sabitledim. Bu, add_header Transfer-Encoding parçasını ekledim; nginx yapılandırmasında, ancak şimdi Firefox’a yükledikten sonra Chrome’a yüklediğimde 321 hatası (net :: ERR_INVALID_CHUNKED_ENCODING) alıyorum. Belki de bu tip bir çuvalı yapmak için daha iyi bir yol var mı? – jondoe