2017-02-20 9 views
0

このサーバーはオンラインであり、少し編集しました。python HTTPサーバーのキャッシュを削除します

from http.server import BaseHTTPRequestHandler, HTTPServer 
from xml.dom import minidom 
import os 


class MyHandler(BaseHTTPRequestHandler): 
    def do_POST(self): 
     self.data_string = self.rfile.read(int(self.headers['Content-Length'])) 
     self.send_response(200) 
     self.end_headers() 
     valore = str(self.data_string)[2:-1] 
     response = ["",""] 
     response[0],response[1] = processData(valore) 
     if response[0] == 1: 
      sep = "" 
      message = "" 
      for res in response[1]: 
       message += res 
      response = sep.join(message) 
      self.wfile.write(bytes(message, "utf-8")) 

    def do_GET(self): 
     # Send response status code 
     self.send_response(200) 
     # Send headers 
     if self.path.endswith("html"): 
      self.send_header('Content-type', 'text/html') 
      self.end_headers() 
     elif self.path.endswith("css"): 
      self.send_header('Content-type', 'text/css') 
      self.end_headers() 
     elif self.path.endswith("js"): 
      self.send_header('Content-type', 'application/javascript') 
      self.end_headers() 
     elif self.path.endswith(".ico"): 
      print(self.rawpath) 
     if not self.path.endswith("jpeg") and not self.path.endswith("jpg") and not self.path.endswith("png") and not self.path.endswith("gif"): 
      with open(self.path[1:], 'r') as myfile: 
       data = myfile.read() 
      # Write content as utf-8 data 
      self.wfile.write(bytes(data, "utf8")) 
     if self.path.endswith("jpeg"): 
      f = open(self.path[1:], 'rb') 
      self.send_response(200) 
      self.send_header('Content-type', 'image/jpeg') 
      self.end_headers() 
      self.wfile.write(f.read()) 
      f.close() 
     elif self.path.endswith("png"): 
      f = open(self.path[1:], 'rb') 
      self.send_response(200) 
      self.send_header('Content-type', 'image/png') 
      self.end_headers() 
      self.wfile.write(f.read()) 
      f.close() 
     elif self.path.endswith("gif"): 
      f = open(self.path[1:], 'rb') 
      self.send_response(200) 
      self.send_header('Content-type', 'image/gif') 
      self.end_headers() 
      self.wfile.write(f.read()) 
      f.close() 
     elif self.path.endswith("jpg"): 
      f = open(self.path[1:], 'rb') 
      self.send_response(200) 
      self.send_header('Content-type', 'image/jpeg') 
      self.end_headers() 
      self.wfile.write(f.read()) 
      f.close() 
     return 

def run(): 
    print('starting server...') 

    # Server settings 
    # Choose port 8080, for port 80, which is normally used for a http server, you need root access 
    server_address = ('192.168.2.245', 8081) 
    httpd = HTTPServer(server_address, MyHandler) 
    print('running server...') 
    httpd.serve_forever() 


def processData(data): 
    XMLlist = [] 
    data = data.split(":") 
    if data[0] == "XMLlist": 
     path = os.path.realpath(__file__) 
     path = os.path.dirname(path) 
     for filename in os.listdir(path): 
      if filename.endswith('.xml'): 
       XMLlist.append(filename[:-3]) 
     return 1,XMLlist 
       #fullname = os.path.join(path, filename) 
    else: 
     file = open('default.xml', 'r') 
     tree = minidom.parse(file) 
     tree.getElementsByTagName(data[0])[0].childNodes[0].replaceWholeText(data[1]) 
     file = open('default.xml', 'w') 
     tree.writexml(file) 
     file.close() 
     return 0, 1 


run() 

サーバがうまく動作し、私はキャッシュを削除する必要があります。 は、ここでは、コードです。同じ名前のhtmlページからイメージをリフレッシュしようとすると、サーバーはキャッシュされたイメージを返します。アドバイスはありますか?

は、あなたと私の英語のため申し訳ありませんありがとうございました...

答えて

0

はい

+0

はCtrl + F5またはShiftキーを押して、+ F5ブラウザを更新してみたが、これはからキャッシュを無効にしません。サーバー...私はサーバーがキャッシュを保存しないようにしたい...これは可能ですか? –

+0

'self.send_header( 'キャッシュコントロール'、 'no-store、no-cache、re-revalidate、post-check = 0、pre-check = 0') ' – StefansArya

+0

キャッシングを防止します。 pythonがファイルをキャッシュすると思う..サーバーをリフレッシュしようとしましたか? – StefansArya

関連する問題