ฉันจะบอกให้ Nginx รอสักครู่ก่อนแสดงเนื้อหาได้อย่างไร


14

ดังนั้นเมื่อฉันทดสอบสิ่งต่าง ๆ ในพื้นที่เช่นอาแจ็กซ์ในแอพที่ฉันเขียนฉันมักจะต้องการเพิ่มความล่าช้าในสคริปต์ฝั่งเซิร์ฟเวอร์โดยใช้sleepคำสั่ง ช่วยจำลองการเชื่อมต่อช้าเป็นต้น

มีวิธีในการระบุพฤติกรรมการหน่วงเวลาที่คล้ายกันโดยตรงในการกำหนดค่า Nginx ที่จะทำงานกับไฟล์ HTML แบบแบนที่ให้บริการหรือไม่

ฉันรู้ว่าคุณสามารถทำการจำลองการหน่วงเวลาที่คล้ายกันในระดับเครือข่าย (ดูที่นี่ ) แต่ดูเหมือนว่ายุ่งมากและไม่เคยทำงานได้ดีสำหรับฉัน


คุณไม่คิดว่ามันจะยุ่งกับ Nginx มากขึ้นใช่ไหม
DukeLion

ดูเพิ่มเติมที่: stackoverflow.com/questions/14752943/…
sanmai

คำตอบ:



3

ฉันต้องการเพิ่มคำตอบของ astlockว่าถ้าคุณต้องการตอบกลับด้วยข้อความธรรมดาreturnโปรดทราบว่ามีข้อแม้: คุณต้องใช้echoไม่ใช่returnคำสั่งมาตรฐานหลังจากecho_sleepตอบกลับด้วยความล่าช้าเช่นนี้:

location = /slow-reply {
  echo_sleep 5.0;
  #return 200 'this response would NOT be delayed!';      
  echo 'this text will come in response body with HTTP 200 after 5 seconds';
}

(ทดสอบใน openresty / 1.7.10.2)


0

ให้คำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีที่คุณอาจใช้โมดูล echo:

หากคุณเริ่มต้นจากการกำหนดค่าพื้นฐานโหลดไฟล์สแตติกและไฟล์ PHP ด้วยสิ่งต่อไปนี้:

location ~ \.php$ {
    include fastcgi.conf;
    fastcgi_pass php;
}

จากนั้นสามารถแปลงเป็นแบบนี้เพื่อเพิ่มความล่าช้าในการร้องขอทั้งแบบสแตติกและ PHP:

# Static files
location / {
    echo_sleep 5;
    echo_exec @default;
}
location @default {}

// PHP files
location ~ \.php$ {
    echo_sleep 5;
    echo_exec @php;
}
location @php {
    include fastcgi.conf;
    fastcgi_pass php;
}

สิ่งนี้สามารถแก้ไขได้อย่างชัดเจนสำหรับทุกสิ่งที่คุณต้องการ โดยพื้นฐานแล้วย้ายแต่ละบล็อกที่ตั้งลงใน @location ที่มีชื่อ จากนั้นใช้echo_sleepและecho_execในบล็อกตำแหน่งเดิม


-1

คุณสามารถตั้งค่าเซิร์ฟเวอร์ส่วนหลังเพื่อรับคำขอจากนั้นเลื่อนการตอบสนองในเซิร์ฟเวอร์ Nginx proxy ร้องขอไปยังเซิร์ฟเวอร์ด้านหลัง


-3

ไม่มีทาง (IHMO) ที่จะชะลอการตอบสนองจาก nginx คุณต้องทำใหม่แอปพลิเคชันของคุณไม่ใช่เว็บเซิร์ฟเวอร์เพื่อเปิดใช้งานคุณสมบัติดังกล่าว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.