Почему для перенаправления URL-адреса «X» с косой чертой («X /») требуется больше времени, чем для URL-адреса «X» для возврата ответа? - PullRequest
0 голосов
/ 10 апреля 2019

Я создал экспериментальную функцию резервного копирования для сайта с демонстрационным календарем, которая копирует файлы calendar.json и notepad.txt в папку для резервных копий с использованием этой схемы Flask:

import os, time, shutil
from flask import Blueprint

backup = Blueprint("backup", __name__)

@backup.route("/backup/create/", methods = ["GET"])
def backup_create():
  # get the current time
  current = time.strftime("%Y_%m_%d-%H:%M:%S")
  # create the backup folder (if it doesn't exist)
  if not os.path.isdir("./storage/backup/" + current):
    os.makedirs("./storage/backup/" + current)
  # create the copies
  shutil.copyfile("./storage/calendar.json", "./storage/backup/" + current + "/calendar.json")
  shutil.copyfile("./storage/notepad.txt", "./storage/backup/" + current + "/notepad.txt")
  # return the name of the backup folder
  return current, 200

Затем я использую метод jQuery.get(..., ...), чтобы отправить запрос GET на /backup/create, например:

if(confirm("Are you sure you'd like to create a backup?")) {
  $.get("/backup/create", function(time) {
    alert("Files copied to the " + time + " folder.");
  });
}

Когда я отправил запрос, я получил xhr вывод на моей консоли:

time

Я знаю, что могу избавиться от первого запроса, добавив косую черту в мой запрос GET, используя это:

$.get("/backup/create/" ...

Мне интересно, почему занимает ли перенаправление больше времени, чем фактический запрос для возврата ответа?

Я попытался повторить это, удалив косую черту в нескольких других моих Ajax-запросах, и получил те же результаты.

Был даже один редирект, который занимал на 43 миллисекунды больше, чем фактический запрос.

Дополнительная информация:

  1. Я использую: FireFox 67.0.0 (64-разрядная версия), Python 3.7, Flask 1.0.2 и jQuery 3.3.1
  2. первые три сообщения консоли не имеют ничего общего с этим вопросом.

ОБНОВЛЕНИЕ: прежде чем я получу за это удар, я просто хочу, чтобы все знали, что да, я знаю, что это всего лишь пара миллисекунд, и ни один пользователь никогда не заметит, я ' Мне просто любопытно, почему это происходит.

Любая помощь и советы приветствуются, спасибо.

...