2017-02-20 184 views
0

我發現這臺服務器在線,我編輯了一下。 下面是代碼:刪除蟒蛇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

嘗試按Ctrl + F5鍵Shift + F5

+0

是刷新瀏覽器,但是這並不禁止從緩存中服務器...我希望服務器不存儲任何緩存......這可能嗎? –

+0

'self.send_header('Cache-Control','no-store,no-cache,must-revalidate,post-check = 0,pre-check = 0')' – StefansArya

+0

它會阻止緩存,我不會認爲python會緩存文件..你有沒有嘗試刷新服務器? – StefansArya