{"id":29524,"date":"2025-08-22T12:49:49","date_gmt":"2025-08-22T05:49:49","guid":{"rendered":"https:\/\/dps.media\/dinh-cau-hinh-dns-cho-website-toi-uu-toc-do-va-bao-mat\/"},"modified":"2025-08-22T12:49:59","modified_gmt":"2025-08-22T05:49:59","slug":"dns-configuration-for-website-speed-and-security-optimization","status":"publish","type":"post","link":"https:\/\/dps.media\/en\/dns-configuration-for-website-speed-and-security-optimization\/","title":{"rendered":"Configure DNS for your website: Optimize speed and security"},"content":{"rendered":"<?xml encoding=\"utf-8\" ?><p><!-- DNS Bulk Lookup Widget - DPS.MEDIA Branded v\u1edbi CSS Isolated -->\r\n<\/p><div id=\"dnsBulkWidget\"><\/div><script>\r\n(function(){\r\n  const root = document.getElementById('dnsBulkWidget');\r\n  if (!root) return;\r\n\r\n  const POPULAR = ['A','CNAME','MX','NS','TXT'];\r\n  const RECORDS = ['ALL', ...POPULAR];\r\n  const TYPE_CODE = { A:1, CNAME:5, MX:15, NS:2, TXT:16 };\r\n\r\n  \/\/ T\u1ea1o CSS c\u00f4 l\u1eadp v\u1edbi prefix\r\n  const widgetStyles = `\r\n    #dnsBulkWidget {\r\n      all: initial !important;\r\n      font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif !important;\r\n    }\r\n    \r\n    #dnsBulkWidget *,\r\n    #dnsBulkWidget *::before,\r\n    #dnsBulkWidget *::after {\r\n      box-sizing: border-box !important;\r\n      margin: 0 !important;\r\n      padding: 0 !important;\r\n      border: none !important;\r\n      background: none !important;\r\n      outline: none !important;\r\n      text-decoration: none !important;\r\n      list-style: none !important;\r\n      font: inherit !important;\r\n      color: inherit !important;\r\n      vertical-align: baseline !important;\r\n      line-height: normal !important;\r\n    }\r\n\r\n    \/* Container ch\u00ednh *\/\r\n    #dnsBulkWidget .dns-container {\r\n      max-width: 1000px !important;\r\n      margin: 24px auto !important;\r\n      padding: 0 !important;\r\n      border: 1px solid #e5e7eb !important;\r\n      border-radius: 16px !important;\r\n      font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif !important;\r\n      overflow: hidden !important;\r\n      box-shadow: 0 10px 25px -5px rgba(21,21,119,0.1), 0 4px 6px -2px rgba(21,21,119,0.05) !important;\r\n      background: #ffffff !important;\r\n    }\r\n\r\n    \/* Header *\/\r\n    #dnsBulkWidget .dns-header {\r\n      background: linear-gradient(135deg, #151577 0%, #1e1e7a 100%) !important;\r\n      padding: 20px !important;\r\n      color: white !important;\r\n      position: relative !important;\r\n      overflow: hidden !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-header-bg1 {\r\n      position: absolute !important;\r\n      top: -20px !important;\r\n      right: -20px !important;\r\n      width: 100px !important;\r\n      height: 100px !important;\r\n      background: rgba(255,255,255,0.05) !important;\r\n      border-radius: 50% !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-header-bg2 {\r\n      position: absolute !important;\r\n      bottom: -30px !important;\r\n      left: -30px !important;\r\n      width: 80px !important;\r\n      height: 80px !important;\r\n      background: rgba(50,181,97,0.15) !important;\r\n      border-radius: 50% !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-header-content {\r\n      position: relative !important;\r\n      z-index: 1 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-header-top {\r\n      display: flex !important;\r\n      align-items: center !important;\r\n      justify-content: space-between !important;\r\n      margin-bottom: 8px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-header-left {\r\n      display: flex !important;\r\n      align-items: center !important;\r\n      gap: 12px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-icon {\r\n      width: 40px !important;\r\n      height: 40px !important;\r\n      background: linear-gradient(135deg, #32b561, #28a555) !important;\r\n      border-radius: 12px !important;\r\n      display: flex !important;\r\n      align-items: center !important;\r\n      justify-content: center !important;\r\n      font-size: 20px !important;\r\n      font-weight: bold !important;\r\n      color: white !important;\r\n      box-shadow: 0 4px 8px rgba(50,181,97,0.3) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-title {\r\n      margin: 0 !important;\r\n      font-size: 20px !important;\r\n      font-weight: 700 !important;\r\n      letter-spacing: -0.5px !important;\r\n      color: #fff !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-subtitle {\r\n      margin: 0 !important;\r\n      font-size: 13px !important;\r\n      opacity: 0.8 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-brand {\r\n      text-align: right !important;\r\n      font-size: 12px !important;\r\n      opacity: 0.7 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-brand-name {\r\n      font-weight: 600 !important;\r\n      color: #32b561 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-desc {\r\n      margin: 0 !important;\r\n      font-size: 13px !important;\r\n      opacity: 0.9 !important;\r\n      line-height: 1.4 !important;\r\n    }\r\n\r\n    \/* Main Content *\/\r\n    #dnsBulkWidget .dns-main {\r\n      padding: 20px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-main-layout {\r\n      display: flex !important;\r\n      flex-direction: column !important;\r\n      gap: 16px !important;\r\n      margin-bottom: 16px !important;\r\n    }\r\n\r\n    \/* Input Section *\/\r\n    #dnsBulkWidget .dns-input-section {\r\n      position: relative !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-textarea {\r\n      width: 100% !important;\r\n      padding: 12px !important;\r\n      border: 2px solid #e5e7eb !important;\r\n      border-radius: 12px !important;\r\n      resize: vertical !important;\r\n      font-family: monospace !important;\r\n      font-size: 13px !important;\r\n      box-sizing: border-box !important;\r\n      transition: border-color 0.3s !important;\r\n      background: #fafbfc !important;\r\n      color: #374151 !important;\r\n      min-height: 120px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-textarea:focus {\r\n      outline: none !important;\r\n      border-color: #151577 !important;\r\n      box-shadow: 0 0 0 3px rgba(21,21,119,0.1) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-count {\r\n      position: absolute !important;\r\n      top: 8px !important;\r\n      right: 12px !important;\r\n      background: rgba(21,21,119,0.9) !important;\r\n      color: white !important;\r\n      padding: 4px 8px !important;\r\n      border-radius: 6px !important;\r\n      font-size: 11px !important;\r\n      font-weight: 500 !important;\r\n    }\r\n\r\n    \/* Controls *\/\r\n    #dnsBulkWidget .dns-controls {\r\n      display: flex !important;\r\n      flex-direction: column !important;\r\n      gap: 12px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-label {\r\n      display: block !important;\r\n      font-size: 13px !important;\r\n      font-weight: 600 !important;\r\n      color: #151577 !important;\r\n      margin-bottom: 8px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-types {\r\n      display: flex !important;\r\n      flex-wrap: wrap !important;\r\n      gap: 6px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-type-btn {\r\n      padding: 8px 14px !important;\r\n      border: 1px solid #cbd5e1 !important;\r\n      border-radius: 10px !important;\r\n      background: #fff !important;\r\n      cursor: pointer !important;\r\n      font-size: 12px !important;\r\n      font-weight: 500 !important;\r\n      transition: all 0.3s !important;\r\n      color: #374151 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-type-btn:hover {\r\n      border-color: #151577 !important;\r\n      color: #151577 !important;\r\n      transform: translateY(-1px) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-type-btn.active {\r\n      background: linear-gradient(135deg, #151577, #1e1e7a) !important;\r\n      color: #fff !important;\r\n      border-color: #151577 !important;\r\n      box-shadow: 0 4px 12px rgba(21,21,119,0.25) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-type-btn.active:hover {\r\n      color: #fff !important;\r\n      transform: translateY(-1px) !important;\r\n    }\r\n\r\n    \/* Actions *\/\r\n    #dnsBulkWidget .dns-actions {\r\n      display: flex !important;\r\n      flex-wrap: wrap !important;\r\n      gap: 12px !important;\r\n      align-items: end !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-delay-section {\r\n      flex: 1 !important;\r\n      min-width: 140px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-delay-label {\r\n      display: block !important;\r\n      font-size: 12px !important;\r\n      color: #151577 !important;\r\n      font-weight: 500 !important;\r\n      margin-bottom: 4px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-delay-input-group {\r\n      display: flex !important;\r\n      align-items: center !important;\r\n      gap: 6px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-delay-input {\r\n      width: 70px !important;\r\n      padding: 6px 8px !important;\r\n      border: 1px solid #cbd5e1 !important;\r\n      border-radius: 8px !important;\r\n      font-size: 12px !important;\r\n      transition: border-color 0.3s !important;\r\n      background: #fff !important;\r\n      color: #374151 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-delay-input:focus {\r\n      outline: none !important;\r\n      border-color: #151577 !important;\r\n      box-shadow: 0 0 0 3px rgba(21,21,119,0.1) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-delay-unit {\r\n      font-size: 12px !important;\r\n      color: #64748b !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-action-buttons {\r\n      display: flex !important;\r\n      gap: 8px !important;\r\n      flex-wrap: wrap !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn {\r\n      padding: 12px 20px !important;\r\n      border: none !important;\r\n      border-radius: 10px !important;\r\n      cursor: pointer !important;\r\n      font-weight: 600 !important;\r\n      font-size: 13px !important;\r\n      white-space: nowrap !important;\r\n      transition: all 0.3s !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn-primary {\r\n      background: linear-gradient(135deg, #151577, #1e1e7a) !important;\r\n      color: #fff !important;\r\n      box-shadow: 0 4px 12px rgba(21,21,119,0.3) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn-primary:hover {\r\n      transform: translateY(-1px) !important;\r\n      box-shadow: 0 6px 20px rgba(21,21,119,0.4) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn-secondary {\r\n      border: 2px solid #dc2626 !important;\r\n      background: #fff !important;\r\n      color: #dc2626 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn:disabled {\r\n      background: #6b7280 !important;\r\n      cursor: not-allowed !important;\r\n      box-shadow: none !important;\r\n      transform: none !important;\r\n    }\r\n\r\n    \/* Status Bar *\/\r\n    #dnsBulkWidget .dns-status-bar {\r\n      display: flex !important;\r\n      gap: 10px !important;\r\n      flex-wrap: wrap !important;\r\n      align-items: center !important;\r\n      margin-bottom: 16px !important;\r\n      padding: 12px !important;\r\n      background: linear-gradient(90deg, #f8fafc, #f1f5f9) !important;\r\n      border-radius: 12px !important;\r\n      border: 1px solid #e2e8f0 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn-small {\r\n      padding: 8px 14px !important;\r\n      border-radius: 8px !important;\r\n      cursor: pointer !important;\r\n      font-size: 12px !important;\r\n      font-weight: 500 !important;\r\n      transition: all 0.3s !important;\r\n      background: #fff !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn-copy {\r\n      border: 1px solid #32b561 !important;\r\n      color: #32b561 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn-copy:not(:disabled):hover {\r\n      background: #32b561 !important;\r\n      color: white !important;\r\n      transform: translateY(-1px) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn-copy.success {\r\n      background: linear-gradient(135deg, #32b561, #28a555) !important;\r\n      color: #fff !important;\r\n      border-color: #32b561 !important;\r\n      box-shadow: 0 4px 12px rgba(50,181,97,0.3) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn-clear {\r\n      border: 1px solid #cbd5e1 !important;\r\n      color: #374151 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-btn-clear:hover {\r\n      border-color: #151577 !important;\r\n      color: #151577 !important;\r\n      transform: translateY(-1px) !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-status-right {\r\n      flex: 1 !important;\r\n      min-width: 120px !important;\r\n      display: flex !important;\r\n      align-items: center !important;\r\n      justify-content: end !important;\r\n      gap: 12px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-progress {\r\n      display: none !important;\r\n      background: #e2e8f0 !important;\r\n      border-radius: 10px !important;\r\n      height: 8px !important;\r\n      width: 120px !important;\r\n      overflow: hidden !important;\r\n      min-width: 80px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-progress-bar {\r\n      height: 100% !important;\r\n      background: linear-gradient(90deg, #151577, #32b561) !important;\r\n      width: 0% !important;\r\n      transition: width 0.3s !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-status {\r\n      font-size: 12px !important;\r\n      color: #151577 !important;\r\n      font-weight: 600 !important;\r\n      text-align: right !important;\r\n    }\r\n\r\n    \/* Error Display *\/\r\n    #dnsBulkWidget .dns-error {\r\n      display: none !important;\r\n      background: linear-gradient(135deg, #fef2f2, #fee2e2) !important;\r\n      border: 2px solid #fca5a5 !important;\r\n      color: #991b1b !important;\r\n      padding: 12px !important;\r\n      border-radius: 12px !important;\r\n      margin-bottom: 12px !important;\r\n      align-items: center !important;\r\n      gap: 10px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-error-icon {\r\n      font-size: 18px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-error-text {\r\n      font-weight: 500 !important;\r\n    }\r\n\r\n    \/* Results *\/\r\n    #dnsBulkWidget .dns-results {\r\n      overflow: auto !important;\r\n      max-height: 60vh !important;\r\n      border: 2px solid #e5e7eb !important;\r\n      border-radius: 12px !important;\r\n      background: #fafafa !important;\r\n      min-height: 120px !important;\r\n      display: flex !important;\r\n      align-items: center !important;\r\n      justify-content: center !important;\r\n      color: #64748b !important;\r\n      font-style: italic !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-empty-state {\r\n      text-align: center !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-empty-icon {\r\n      font-size: 32px !important;\r\n      margin-bottom: 8px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-empty-text {\r\n      margin-bottom: 4px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-empty-subtext {\r\n      font-size: 11px !important;\r\n      color: #9ca3af !important;\r\n    }\r\n\r\n    \/* Table - Tr\u00e1nh d\u00f9ng th, td g\u1ed1c *\/\r\n    #dnsBulkWidget .dns-table {\r\n      width: 100% !important;\r\n      border-collapse: collapse !important;\r\n      font-size: 12px !important;\r\n      background: #fff !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table thead {\r\n      position: sticky !important;\r\n      top: 0 !important;\r\n      background: linear-gradient(135deg, #151577, #1e1e7a) !important;\r\n      z-index: 1 !important;\r\n      color: white !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-header {\r\n      padding: 12px 15px !important;\r\n      font-weight: 600 !important;\r\n      font-size: 12px !important;\r\n      text-align: left !important;\r\n      background: inherit !important;\r\n      color: inherit !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-header.center {\r\n      text-align: center !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table tbody .dns-table-row:nth-child(even) {\r\n      background: #f8fafc !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table tbody .dns-table-row:nth-child(odd) {\r\n      background: #ffffff !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-cell {\r\n      padding: 10px 15px !important;\r\n      border-bottom: 1px solid #f1f5f9 !important;\r\n      font-size: 12px !important;\r\n      word-break: break-all !important;\r\n      background: inherit !important;\r\n      color: inherit !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-cell.center {\r\n      text-align: center !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-cell.type {\r\n      font-weight: 600 !important;\r\n      color: #151577 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-cell.name {\r\n      font-family: monospace !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-cell.ttl {\r\n      font-family: monospace !important;\r\n      color: #32b561 !important;\r\n      font-weight: 500 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-header-row {\r\n      display: flex !important;\r\n      background: linear-gradient(135deg, #151577, #1e1e7a) !important;\r\n      color: white !important;\r\n      position: sticky !important;\r\n      top: 0 !important;\r\n      z-index: 1 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-row {\r\n      display: flex !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-header:nth-child(1),\r\n    #dnsBulkWidget .dns-table-cell:nth-child(1) {\r\n      flex: 2 !important;\r\n      min-width: 120px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-header:nth-child(2),\r\n    #dnsBulkWidget .dns-table-cell:nth-child(2) {\r\n      flex: 0 0 80px !important;\r\n      text-align: center !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-header:nth-child(3),\r\n    #dnsBulkWidget .dns-table-cell:nth-child(3) {\r\n      flex: 1.5 !important;\r\n      min-width: 100px !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-header:nth-child(4),\r\n    #dnsBulkWidget .dns-table-cell:nth-child(4) {\r\n      flex: 0 0 60px !important;\r\n      text-align: center !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-table-header:nth-child(5),\r\n    #dnsBulkWidget .dns-table-cell:nth-child(5) {\r\n      flex: 2.5 !important;\r\n      min-width: 150px !important;\r\n    }\r\n\r\n    \/* Footer *\/\r\n    #dnsBulkWidget .dns-footer {\r\n      background: linear-gradient(135deg, #f8fafc, #f1f5f9) !important;\r\n      padding: 12px 20px !important;\r\n      border-top: 1px solid #e2e8f0 !important;\r\n      text-align: center !important;\r\n      font-size: 11px !important;\r\n      color: #64748b !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-footer-content {\r\n      display: flex !important;\r\n      align-items: center !important;\r\n      justify-content: center !important;\r\n      gap: 8px !important;\r\n      flex-wrap: wrap !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-footer-brand {\r\n      color: #151577 !important;\r\n      font-weight: 700 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-footer-link {\r\n      color: #32b561 !important;\r\n      text-decoration: none !important;\r\n      font-weight: 600 !important;\r\n    }\r\n\r\n    #dnsBulkWidget .dns-footer-link:hover {\r\n      text-decoration: underline !important;\r\n    }\r\n\r\n    \/* Mobile Responsive *\/\r\n    @media (min-width: 768px) {\r\n      #dnsBulkWidget .dns-main-layout {\r\n        display: grid !important;\r\n        grid-template-columns: 1fr 320px !important;\r\n        gap: 20px !important;\r\n      }\r\n      \r\n      #dnsBulkWidget .dns-actions {\r\n        flex-direction: column !important;\r\n        align-items: stretch !important;\r\n      }\r\n      \r\n      #dnsBulkWidget .dns-action-buttons {\r\n        display: flex !important;\r\n        flex-direction: column !important;\r\n        gap: 10px !important;\r\n      }\r\n      \r\n      #dnsBulkWidget .dns-textarea {\r\n        min-height: 160px !important;\r\n      }\r\n    }\r\n    \r\n    @media (max-width: 767px) {\r\n      #dnsBulkWidget .dns-actions {\r\n        flex-direction: column !important;\r\n      }\r\n      \r\n      #dnsBulkWidget .dns-action-buttons {\r\n        width: 100% !important;\r\n      }\r\n      \r\n      #dnsBulkWidget .dns-btn {\r\n        flex: 1 !important;\r\n      }\r\n      \r\n      #dnsBulkWidget .dns-types {\r\n        justify-content: center !important;\r\n      }\r\n\r\n      #dnsBulkWidget .dns-table-header.mobile-hidden,\r\n      #dnsBulkWidget .dns-table-cell.mobile-hidden {\r\n        display: none !important;\r\n      }\r\n\r\n      #dnsBulkWidget .dns-table-header,\r\n      #dnsBulkWidget .dns-table-cell {\r\n        padding: 8px 6px !important;\r\n        font-size: 11px !important;\r\n      }\r\n    }\r\n  `;\r\n\r\n  \/\/ Th\u00eam CSS v\u00e0o head\r\n  const styleEl = document.createElement('style');\r\n  styleEl.textContent = widgetStyles;\r\n  document.head.appendChild(styleEl);\r\n\r\n  root.innerHTML = `\r\n  <div class=\"dns-container\">\r\n    \r\n    <!-- DPS.MEDIA Header -->\r\n    <div class=\"dns-header\">\r\n      <div class=\"dns-header-bg1\">\r\n      <div class=\"dns-header-bg2\">\r\n      <div class=\"dns-header-content\">\r\n        <div class=\"dns-header-top\">\r\n          <div class=\"dns-header-left\">\r\n            <div class=\"dns-icon\">\ud83d\udd0d\r\n            <div>\r\n              <div class=\"dns-title\">Tra C\u1ee9u DNS H\u00e0ng Lo\u1ea1t\r\n              <div class=\"dns-subtitle\">C\u00f4ng c\u1ee5 chuy\u00ean nghi\u1ec7p t\u1eeb DPS.MEDIA\r\n            \r\n          \r\n          <div class=\"dns-brand\">\r\n            <div class=\"dns-brand-name\">DPS.MEDIA\r\n            <div>Digital Tools\r\n          \r\n        \r\n        <div class=\"dns-desc\">Nh\u1eadp m\u1ed7i t\u00ean mi\u1ec1n m\u1ed9t d\u00f2ng (c\u00f3 th\u1ec3 d\u00e1n URL). Ch\u1ecdn lo\u1ea1i b\u1ea3n ghi ho\u1eb7c \"T\u1ea4T C\u1ea2\" \u0111\u1ec3 tra 5 lo\u1ea1i ph\u1ed5 bi\u1ebfn.\r\n      \r\n    \r\n\r\n    <!-- Main Content -->\r\n    <div class=\"dns-main\">\r\n      <!-- Mobile\/Desktop Layout -->\r\n      <div class=\"dns-main-layout\">\r\n        \r\n        <!-- Input Section -->\r\n        <div class=\"dns-input-section\">\r\n          <textarea id=\"dns-lines\" class=\"dns-textarea\" rows=\"6\" placeholder=\"dps.media\nexample.com\nhttps:\/\/sub.domain.com\/\">\r\n          <div id=\"dns-count\" class=\"dns-count\">0 t\u00ean mi\u1ec1n\r\n        \r\n        \r\n        <!-- Controls Section -->\r\n        <div class=\"dns-controls\">\r\n          \r\n          <!-- Record Types -->\r\n          <div>\r\n            <div class=\"dns-label\">Lo\u1ea1i B\u1ea3n Ghi:\r\n            <div id=\"dns-types\" class=\"dns-types\">\r\n          \r\n          \r\n          <!-- Settings & Buttons Row -->\r\n          <div class=\"dns-actions\">\r\n            \r\n            <!-- Delay Setting -->\r\n            <div class=\"dns-delay-section\">\r\n              <div class=\"dns-delay-label\">\u0110\u1ed9 tr\u1ec5 gi\u1eefa c\u00e1c request:\r\n              <div class=\"dns-delay-input-group\">\r\n                <input id=\"dns-delay\" type=\"number\" min=\"50\" step=\"10\" value=\"120\" class=\"dns-delay-input\"> \r\n                <span class=\"dns-delay-unit\">ms\r\n              \r\n            \r\n            \r\n            <!-- Action Buttons -->\r\n            <div class=\"dns-action-buttons\">\r\n              <button id=\"dns-run\" class=\"dns-btn dns-btn-primary\">\r\n                <span id=\"run-text\">\ud83d\ude80 B\u1eaft \u0110\u1ea7u\r\n              \r\n              <button id=\"dns-stop\" class=\"dns-btn dns-btn-secondary\" style=\"display:none\">\r\n                \u23f9\ufe0f D\u1eebng\r\n              \r\n            \r\n          \r\n        \r\n      \r\n\r\n      <!-- Status & Actions Bar -->\r\n      <div class=\"dns-status-bar\">\r\n        <button id=\"dns-copy-table\" class=\"dns-btn-small dns-btn-copy\" disabled>\r\n          \ud83d\udccb Sao Ch\u00e9p\r\n        \r\n        <button id=\"dns-clear\" class=\"dns-btn-small dns-btn-clear\">\r\n          \ud83d\uddd1\ufe0f X\u00f3a\r\n        \r\n        \r\n        <!-- Progress Bar -->\r\n        <div class=\"dns-status-right\">\r\n          <div id=\"dns-progress\" class=\"dns-progress\">\r\n            <div id=\"dns-progress-bar\" class=\"dns-progress-bar\">\r\n          \r\n          <div id=\"dns-status\" class=\"dns-status\">\r\n        \r\n      \r\n\r\n      <!-- Error Display -->\r\n      <div id=\"dns-error\" class=\"dns-error\">\r\n        <span class=\"dns-error-icon\">\u26a0\ufe0f\r\n        <span id=\"dns-error-text\" class=\"dns-error-text\">\r\n      \r\n\r\n      <!-- Results Table -->\r\n      <div id=\"dns-results\" class=\"dns-results\">\r\n        <div class=\"dns-empty-state\">\r\n          <div class=\"dns-empty-icon\">\ud83d\udcca\r\n          <div class=\"dns-empty-text\">S\u1eb5n s\u00e0ng tra c\u1ee9u b\u1ea3n ghi DNS...\r\n          <div class=\"dns-empty-subtext\">\u0110\u01b0\u1ee3c h\u1ed7 tr\u1ee3 b\u1edfi DPS.MEDIA\r\n        \r\n      \r\n    \r\n\r\n    <!-- Footer -->\r\n    <div class=\"dns-footer\">\r\n      <div class=\"dns-footer-content\">\r\n        <span>Ph\u00e1t tri\u1ec3n b\u1edfi\r\n        <strong class=\"dns-footer-brand\">DPS.MEDIA\r\n        <span>\u2022\r\n        <span>C\u00f4ng c\u1ee5 s\u1ed1 chuy\u00ean nghi\u1ec7p\r\n        <span>\u2022\r\n        <a href=\"https:\/\/dps.media\" target=\"_blank\" class=\"dns-footer-link\">dps.media\r\n      \r\n    \r\n  `;\r\n\r\n  const ta = root.querySelector('#dns-lines');\r\n  const btnRun = root.querySelector('#dns-run');\r\n  const btnStop = root.querySelector('#dns-stop');\r\n  const btnClear = root.querySelector('#dns-clear');\r\n  const typesWrap = root.querySelector('#dns-types');\r\n  const statusEl = root.querySelector('#dns-status');\r\n  const errorEl = root.querySelector('#dns-error');\r\n  const errorTextEl = root.querySelector('#dns-error-text');\r\n  const resultsEl = root.querySelector('#dns-results');\r\n  const delayInput = root.querySelector('#dns-delay');\r\n  const btnCopy = root.querySelector('#dns-copy-table');\r\n  const countEl = root.querySelector('#dns-count');\r\n  const progressEl = root.querySelector('#dns-progress');\r\n  const progressBarEl = root.querySelector('#dns-progress-bar');\r\n  const runTextEl = root.querySelector('#run-text');\r\n\r\n  \/\/ Type pills v\u1edbi DPS branding\r\n  const TYPE_LABELS = {\r\n    'ALL': 'T\u1ea4T C\u1ea2',\r\n    'A': 'A', \r\n    'CNAME': 'CNAME',\r\n    'MX': 'MX',\r\n    'NS': 'NS',\r\n    'TXT': 'TXT'\r\n  };\r\n\r\n  let activeType = 'A';\r\n  RECORDS.forEach(t => {\r\n    const b = document.createElement('button');\r\n    b.textContent = TYPE_LABELS[t] || t;\r\n    b.className = 'dns-type-btn';\r\n    if (t === activeType) {\r\n      b.classList.add('active');\r\n    }\r\n    \r\n    b.addEventListener('click',()=>{\r\n      if (isRunning) return;\r\n      activeType = t;\r\n      [...typesWrap.children].forEach(c => c.classList.remove('active'));\r\n      b.classList.add('active');\r\n    });\r\n    typesWrap.appendChild(b);\r\n  });\r\n\r\n  \/\/ Domain count tracker v\u1edbi DPS colors\r\n  function updateDomainCount() {\r\n    const domains = ta.value.split(\/\\r?\\n\/)\r\n      .map(s=>extractHostname(s))\r\n      .filter(Boolean);\r\n    countEl.textContent = `${domains.length} t\u00ean mi\u1ec1n`;\r\n    \r\n    if (domains.length > 100) {\r\n      countEl.style.background = 'rgba(220,38,38,0.9) !important';\r\n      countEl.style.color = 'white !important';\r\n    } else if (domains.length > 50) {\r\n      countEl.style.background = 'rgba(245,158,11,0.9) !important';\r\n      countEl.style.color = 'white !important';\r\n    } else if (domains.length > 0) {\r\n      countEl.style.background = 'rgba(50,181,97,0.9) !important';\r\n      countEl.style.color = 'white !important';\r\n    } else {\r\n      countEl.style.background = 'rgba(21,21,119,0.9) !important';\r\n      countEl.style.color = 'white !important';\r\n    }\r\n  }\r\n\r\n  ta.addEventListener('input', updateDomainCount);\r\n  updateDomainCount();\r\n\r\n  function clampDelay(){\r\n    let v = Number(delayInput.value || 0);\r\n    if (!Number.isFinite(v) || v < 50){\r\n      v = 50;\r\n      delayInput.value = String(v);\r\n      setStatus('\u26a0\ufe0f \u0110\u1ed9 tr\u1ec5 \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u1ed1i thi\u1ec3u: 50ms');\r\n    }\r\n    return v;\r\n  }\r\n  delayInput.addEventListener('input', clampDelay);\r\n  delayInput.addEventListener('blur', clampDelay);\r\n  delayInput.addEventListener('keydown', (e)=>{\r\n    if (e.key === '-') e.preventDefault();\r\n  });\r\n\r\n  function extractHostname(input){\r\n    if(!input) return '';\r\n    try{ return new URL(input).hostname.replace(\/\\.$\/,''); }\r\n    catch(e){ return String(input).trim().replace(\/^https?:\\\/\\\/\/i,'').replace(\/^\\\/*\/,'').split('\/')[0].split('?')[0].replace(\/\\.$\/,''); }\r\n  }\r\n\r\n  function sleep(ms){ return new Promise(r=>setTimeout(r, ms)); }\r\n\r\n  function clearError(){ \r\n    errorEl.style.display='none'; \r\n    errorTextEl.textContent=''; \r\n  }\r\n  function showError(msg){ \r\n    errorEl.style.display='flex'; \r\n    errorTextEl.textContent=msg; \r\n  }\r\n  function setStatus(msg){ \r\n    statusEl.textContent = msg; \r\n  }\r\n\r\n  function updateProgress(current, total) {\r\n    if (total === 0) {\r\n      progressEl.style.display = 'none';\r\n      return;\r\n    }\r\n    progressEl.style.display = 'block';\r\n    const percentage = Math.min((current \/ total) * 100, 100);\r\n    progressBarEl.style.width = `${percentage}%`;\r\n  }\r\n\r\n  \/\/ Render table v\u1edbi DPS branding - S\u1eed d\u1ee5ng div thay v\u00ec table elements\r\n  function ensureTable(){\r\n    if(resultsEl.firstChild && resultsEl.firstChild.classList && resultsEl.firstChild.classList.contains('dns-table')) return resultsEl.firstChild;\r\n    resultsEl.innerHTML = '';\r\n    const table = document.createElement('div');\r\n    table.className = 'dns-table';\r\n    \r\n    const isMobile = window.innerWidth < 768;\r\n    table.innerHTML = `<div class=\"dns-table-header-row\">\r\n      <div class=\"dns-table-header\">T\u00ean Mi\u1ec1n\r\n      <div class=\"dns-table-header center\">Lo\u1ea1i\r\n      <div class=\"dns-table-header ${isMobile ? 'mobile-hidden' : ''}\">T\u00ean\r\n      <div class=\"dns-table-header center\">TTL\r\n      <div class=\"dns-table-header\">D\u1eef Li\u1ec7u\r\n    <div class=\"dns-table-body\">`;\r\n    resultsEl.appendChild(table);\r\n    return table;\r\n  }\r\n\r\n  const allRows = [];\r\n  function appendRows(rows){\r\n    const table = ensureTable();\r\n    const tbody = table.querySelector('.dns-table-body');\r\n    const frag = document.createDocumentFragment();\r\n    const isMobile = window.innerWidth < 768;\r\n    \r\n    rows.forEach((r, i) => {\r\n      allRows.push(r);\r\n      const tr = document.createElement('div');\r\n      tr.className = 'dns-table-row';\r\n      \r\n      let dataColor = '#374151';\r\n      if (r.data === '(kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u)') dataColor = '#9ca3af';\r\n      else if (r.data && r.data.startsWith('L\u1ed7i:')) dataColor = '#dc2626';\r\n      \r\n      tr.innerHTML = `<div class=\"dns-table-cell\">${r.domain}\r\n        <div class=\"dns-table-cell center type\">${r.type}\r\n        <div class=\"dns-table-cell name ${isMobile ? 'mobile-hidden' : ''}\">${r.name||''}\r\n        <div class=\"dns-table-cell center ttl\">${r.ttl??''}\r\n        <div class=\"dns-table-cell data\" style=\"color:${dataColor}\">${r.data||''}`;\r\n      frag.appendChild(tr);\r\n    });\r\n    tbody.appendChild(frag);\r\n    \r\n    btnCopy.disabled = false;\r\n    btnCopy.classList.remove('success');\r\n  }\r\n\r\n  async function queryDoH(domain, type){\r\n    const base = 'https:\/\/dns.google\/resolve';\r\n    const params = new URLSearchParams();\r\n    params.set('name', domain);\r\n    params.set('type', TYPE_CODE[type]);\r\n    const url = `${base}?${params.toString()}`;\r\n    const res = await fetch(url, { headers: { 'Accept':'application\/json' }});\r\n    if(!res.ok) throw new Error(`HTTP ${res.status}`);\r\n    return await res.json();\r\n  }\r\n\r\n  let abortFlag = false;\r\n  let isRunning = false;\r\n\r\n  btnStop.addEventListener('click', ()=>{ \r\n    abortFlag = true; \r\n    setStatus('\ud83d\uded1 \u0110ang d\u1eebng...'); \r\n  });\r\n\r\n  btnClear.addEventListener('click', () => {\r\n    if (isRunning) return;\r\n    resultsEl.innerHTML = `<div class=\"dns-empty-state\">\r\n      <div class=\"dns-empty-icon\">\ud83d\udcca\r\n      <div class=\"dns-empty-text\">S\u1eb5n s\u00e0ng tra c\u1ee9u b\u1ea3n ghi DNS...\r\n      <div class=\"dns-empty-subtext\">\u0110\u01b0\u1ee3c h\u1ed7 tr\u1ee3 b\u1edfi DPS.MEDIA\r\n    `;\r\n    allRows.length = 0;\r\n    btnCopy.disabled = true;\r\n    btnCopy.classList.remove('success');\r\n    clearError();\r\n    setStatus('');\r\n    progressEl.style.display = 'none';\r\n  });\r\n\r\n  btnRun.addEventListener('click', async ()=>{\r\n    if (isRunning) return;\r\n    \r\n    clearError(); \r\n    allRows.length = 0; \r\n    abortFlag = false;\r\n    isRunning = true;\r\n\r\n    btnRun.disabled = true;\r\n    runTextEl.textContent = '\u23f3 \u0110ang ch\u1ea1y...';\r\n    btnStop.style.display = 'block';\r\n    btnClear.style.display = 'none';\r\n    \r\n    [...typesWrap.children].forEach(b => {\r\n      b.style.cursor = 'not-allowed';\r\n      b.style.opacity = '0.6';\r\n    });\r\n\r\n    const delay = clampDelay();\r\n\r\n    const domains = ta.value.split(\/\\r?\\n\/)\r\n      .map(s=>extractHostname(s))\r\n      .filter(Boolean);\r\n\r\n    if (!domains.length){ \r\n      showError('Vui l\u00f2ng nh\u1eadp \u00edt nh\u1ea5t 1 t\u00ean mi\u1ec1n.'); \r\n      resetUIState();\r\n      return; \r\n    }\r\n    if (domains.length > 100){ \r\n      showError('Gi\u1edbi h\u1ea1n 100 t\u00ean mi\u1ec1n m\u1ed7i l\u1ea7n \u0111\u1ec3 tr\u00e1nh qu\u00e1 t\u1ea3i. H\u00e3y chia nh\u1ecf danh s\u00e1ch.'); \r\n      resetUIState();\r\n      return; \r\n    }\r\n\r\n    const types = (activeType==='ALL') ? [...POPULAR] : [activeType];\r\n    const totalQueries = domains.length * types.length;\r\n\r\n    resultsEl.innerHTML = '';\r\n    ensureTable();\r\n\r\n    let completed = 0;\r\n    for (let i=0; i<domains.length && !abortFlag; i++){\r\n      const d = domains[i];\r\n      for (const t of types){\r\n        if (abortFlag) break;\r\n        try{\r\n          setStatus(`\ud83d\udd0d ${d} [${t}] (${completed + 1}\/${totalQueries})`);\r\n          updateProgress(completed, totalQueries);\r\n          \r\n          const json = await queryDoH(d, t);\r\n          if (json && Array.isArray(json.Answer) && json.Answer.length > 0){\r\n            const rows = json.Answer.map(a=>({ domain:d, type:t, name:a.name, ttl:a.TTL, data:a.data }));\r\n            appendRows(rows);\r\n          } else if (json && Array.isArray(json.Authority) && json.Authority.length > 0){\r\n            const rows = json.Authority.map(a=>({ domain:d, type:t, name:a.name, ttl:a.TTL, data:a.data }));\r\n            appendRows(rows);\r\n          } else {\r\n            appendRows([{ domain:d, type:t, name:'', ttl:'', data:'(kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u)' }]);\r\n          }\r\n        }catch(e){\r\n          appendRows([{ domain:d, type:t, name:'', ttl:'', data:`L\u1ed7i: ${e.message}` }]);\r\n        }\r\n        completed++;\r\n        updateProgress(completed, totalQueries);\r\n        if (completed < totalQueries && !abortFlag) {\r\n          await sleep(delay);\r\n        }\r\n      }\r\n    }\r\n    \r\n    if (abortFlag) {\r\n      setStatus(`\u23f9\ufe0f \u0110\u00e3 d\u1eebng (${completed}\/${totalQueries})`);\r\n    } else {\r\n      setStatus(`\u2705 Ho\u00e0n th\u00e0nh! ${allRows.length} b\u1ea3n ghi t\u1eeb ${domains.length} t\u00ean mi\u1ec1n`);\r\n    }\r\n    \r\n    resetUIState();\r\n  });\r\n\r\n  function resetUIState() {\r\n    isRunning = false;\r\n    btnRun.disabled = false;\r\n    runTextEl.textContent = '\ud83d\ude80 B\u1eaft \u0110\u1ea7u';\r\n    btnStop.style.display = 'none';\r\n    btnClear.style.display = 'block';\r\n    progressEl.style.display = 'none';\r\n    \r\n    [...typesWrap.children].forEach(b => {\r\n      b.style.cursor = 'pointer';\r\n      b.style.opacity = '1';\r\n    });\r\n  }\r\n\r\n  function escapeCell(v){\r\n    if (v == null) return '';\r\n    const s = String(v);\r\n    return s.replace(\/\\t\/g, ' ').replace(\/\\r?\\n\/g, ' ');\r\n  }\r\n  function rowsToTSV(rows){\r\n    const header = ['T\u00ean Mi\u1ec1n','Lo\u1ea1i','T\u00ean','TTL','D\u1eef Li\u1ec7u'];\r\n    const lines = [header.join('\\t')].concat(rows.map(r => [r.domain, r.type, r.name||'', r.ttl??'', r.data||''].map(escapeCell).join('\\t')));\r\n    return lines.join('\\n');\r\n  }\r\n  async function copyText(text){\r\n    if (navigator.clipboard && navigator.clipboard.writeText){\r\n      await navigator.clipboard.writeText(text);\r\n    } else {\r\n      const ta = document.createElement('textarea');\r\n      ta.value = text; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta);\r\n    }\r\n  }\r\n  btnCopy.addEventListener('click', async ()=>{\r\n    if (!allRows.length){ setStatus('\u274c Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u \u0111\u1ec3 sao ch\u00e9p.'); return; }\r\n    try{\r\n      await copyText(rowsToTSV(allRows));\r\n      setStatus('\u2705 \u0110\u00e3 sao ch\u00e9p b\u1ea3ng v\u00e0o clipboard!');\r\n      \r\n      const originalText = btnCopy.textContent;\r\n      btnCopy.textContent = '\u2705 \u0110\u00e3 sao ch\u00e9p!';\r\n      btnCopy.classList.add('success');\r\n      \r\n      setTimeout(() => {\r\n        btnCopy.textContent = originalText;\r\n        btnCopy.classList.remove('success');\r\n      }, 2000);\r\n    }catch(e){ \r\n      setStatus('\u274c Sao ch\u00e9p th\u1ea5t b\u1ea1i: ' + e.message); \r\n    }\r\n  });\r\n\r\n  \/\/ Window resize handler\r\n  let resizeTimeout;\r\n  window.addEventListener('resize', () => {\r\n    clearTimeout(resizeTimeout);\r\n    resizeTimeout = setTimeout(() => {\r\n      if (resultsEl.firstChild && resultsEl.firstChild.classList && resultsEl.firstChild.classList.contains('dns-table')) {\r\n        const currentRows = [...allRows];\r\n        allRows.length = 0;\r\n        resultsEl.innerHTML = '';\r\n        if (currentRows.length > 0) {\r\n          appendRows(currentRows);\r\n        }\r\n      }\r\n    }, 100);\r\n  });\r\n\r\n  \/\/ Initialize copy button state\r\n  btnCopy.disabled = true;\r\n})();\r\n<\/script><!-- End DNS Bulk Lookup Widget - DPS.MEDIA --><strong>Standard DNS configuration helps increase website loading speed by up to 30%, while also ensuring security against common cyber attacks.<\/strong><p>\u2062  <\/p><p>According to a survey by Akamai, 53% of users leave a page if it takes more than 3 seconds to load. <a class=\"wpil_keyword_link\" href=\"https:\/\/dps.media\/en\/\" title=\"DPS.MEDIA JSC\" data-wpil-keyword-link=\"linked\" data-wpil-monitor-id=\"758\">DPS.MEDIA<\/a> Always emphasize that DNS optimization is the first step of a successful digital marketing strategy.<br><img decoding=\"async\" class=\"kimage_class\" src=\"https:\/\/dps.media\/wp-content\/uploads\/2025\/08\/efault.jpg8a80.jpg\" alt=\"The importance of DNS in user experience and website performance\" title=\"\"><\/p><h2 id=\"tam-quan-trong-cua-dns-trong-trai-nghiem-nguoi-dung-va-hieu-suat-website\">The importance of DNS in user experience and website performance<\/h2><h3>How does DNS affect page load speed?<\/h3><p>When users access a website, the first process that occurs is <strong>DNS lookup<\/strong>. The system will convert the domain name to an IP address to connect to the server. The average DNS lookup time accounts for 10-30% of the total page load time (according to Cloudflare data, 2023).<\/p><p>A non-optimized DNS can cause the website to:<br>\n\u2013 Increase TTFB (Time To First Byte)<br>\n\u2013 Cause delays during redirection<br>\n\u2013 Negatively affect SEO and user experience<\/p><div class=\"wp-block-group has-background\">\n  <strong>TIP:<\/strong> Use globally distributed DNS such as Cloudflare, Google DNS to reduce geographic latency.\n<\/div><h3>The impact of DNS on website security<\/h3><p>DNS is the \u201cinitial link\u201d in every connection, so protecting it cannot be ignored. A misconfigured DNS can be:<br>\n\u2013 DNS spoofing attack - redirecting users to fake websites<br>\n\u2013 Internal information leak via subdomains<br>\n\u2013 Denial of service (DDoS) through DNS Resolver exploitation<\/p><p>According to a report from Cisco (2022), 91% of malware attacks use DNS at some stage.<\/p><h3>Checklist: Effective DNS configuration for website owners<\/h3><ul>\n<li>Choose reputable DNS providers (Google DNS, Cloudflare, dnspod...)<\/li>\n<li>Enable DNSSEC to authenticate queries<\/li>\n<li>Use Anycast feature to increase global stability<\/li>\n<li>Hide DNS information with proxy forwarding services<\/li>\n<li>Monitor DNS response time with tools like Pingdom, GTmetrix<\/li>\n<\/ul><h3>Comparison table of DNS providers' response times<\/h3><table class=\"wordpress\">\n<thead>\n<tr>\n<th>DNS provider<\/th>\n<th>Average response time (ms)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Google DNS (8.8.8.8)<\/td>\n<td>22ms<\/td>\n<\/tr>\n<tr>\n<td>Cloudflare DNS (1.1.1.1)<\/td>\n<td>13ms<\/td>\n<\/tr>\n<tr>\n<td>OpenDNS<\/td>\n<td>28ms<\/td>\n<\/tr>\n<\/tbody>\n<\/table><p><small>Source: DNSPerf, Report Q1\/2023<\/small><\/p><h3>Case study: Reducing page load speed from 4.2s to 2.1s<\/h3><p>A retail business in Ho Chi Minh City used domestic hosting but international DNS was not distributed. After switching to Cloudflare DNS and enabling DNSSEC, the DNS lookup metric dropped from 560ms to 120ms. At the same time, the bounce rate decreased by nearly 17% after just 2 weeks of implementation.<\/p><div class=\"wp-block-group has-background\">\n  <strong>Warning:<\/strong> Using multiple DNS providers in parallel without properly configuring SRV records can cause random connection loss errors.\n<\/div><h3>Takeaway<\/h3><p>DNS is the first link that creates website performance and security. An improperly configured DNS not only slows down the website but also expands security risks. Start optimizing DNS like optimizing a server \u2013 today.<br><img decoding=\"async\" class=\"kimage_class\" src=\"https:\/\/dps.media\/wp-content\/uploads\/2025\/08\/s-p1-1.jpg\" alt=\"Choose a reputable DNS provider to enhance security and response speed\" title=\"\"><\/p><h2 id=\"lua-chon-nha-cung-cap-dns-uy-tin-de-tang-cuong-bao-mat-va-toc-do-phan-hoi\">Choosing a reputable DNS provider to enhance security and response speed<\/h2><h3>Why is choosing a reliable DNS crucial?<\/h3><p>Choosing the right DNS provider can improve up to <strong>30-70% DNS response speed<\/strong>, which is a key factor in user experience and SEO. According to Cloudflare (DNS Performance Report 2022), a delay of just 100ms at the DNS layer can significantly affect bounce rates.  <\/p><p>Besides speed, the DNS system is the first line of defense for website security. Weak DNS is easily targeted by forms of <strong>DDoS attacks, DNS spoofing, or cache poisoning<\/strong>.<\/p><div class=\"wp-block-group has-background\">\n  <strong>TIP:<\/strong> Prioritize DNS providers that support DNSSEC and have data centers near your target market.\n<\/div><h3>Criteria for selecting a DNS provider<\/h3><p>Below are the factors to consider:<\/p><p>\u2013 <strong>Global DNS query speed:<\/strong> Prioritize providers like Cloudflare, AWS Route 53, or Google Cloud DNS.<br>\n\u2013 <strong>Protection capability:<\/strong> Supports DNSSEC, DDoS protection, integrated DNS firewall.<br>\n\u2013 <strong>Scalability &amp; self-healing:<\/strong> Multiple PoPs (Points of Presence) worldwide.<br>\n\u2013 <strong>DNS management UX\/UI:<\/strong> Clear dashboard, easy record updates.<\/p><h3>Comparison of some popular DNS providers<\/h3><table class=\"WordPress\">\n<thead>\n<tr>\n<th>Provider<\/th>\n<th>DNSSEC<\/th>\n<th>Global PoP<\/th>\n<th>Average response time (ms)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Cloudflare<\/td>\n<td>Yes<\/td>\n<td>200+<\/td>\n<td>15<\/td>\n<\/tr>\n<tr>\n<td>Google Cloud DNS<\/td>\n<td>Yes<\/td>\n<td>150+<\/td>\n<td>22<\/td>\n<\/tr>\n<tr>\n<td>godaddy DNS<\/td>\n<td>No<\/td>\n<td>15+<\/td>\n<td>65<\/td>\n<\/tr>\n<\/tbody>\n<\/table><p>Source: DNSPerf Reports 2023<\/p><h3>Checklist: How to implement new DNS safely &amp; effectively<\/h3><p>\u2013 [ ] Test new DNS on staging before applying to production<br>\n\u2013 [ ] Activate DNSSEC (if supported by the provider)<br>\n\u2013 [ ] Check propagation with DNS Checker tools or dig<br>\n\u2013 [ ] Turn on Notify\/Monitoring if the system has downtime  <\/p><h3>Case study: Interior e-commerce website in Vietnam<\/h3><p>A DPS.MEDIA client in the furniture sector switched DNS from the default provider to Cloudflare (2023). Result: DNS response time dropped from 120ms to under 20ms, DNS downtime rate decreased by 96%. The migration took only 30 minutes with no service interruption.<\/p><div class=\"wp-block-group has-background\">\n  <strong>Note:<\/strong> Some free DNS services are easily limited in scalability when traffic spikes suddenly.\n<\/div><p><strong>Takeaway:<\/strong> Choosing the right DNS not only helps the website run faster but also acts as an early shield against cyber security threats. The DNS provider is the \u201dbackbone\u201d for your entire online system.<br><img decoding=\"async\" class=\"kimage_class\" src=\"https:\/\/dps.media\/wp-content\/uploads\/2025\/08\/-dns-1.jpg\" alt=\"Accurate DNS record setup helps optimize traffic and reduce latency\" title=\"\"><\/p><h2 id=\"thiet-lap-ban-ghi-dns-chuan-xac-giup-toi-uu-hoa-luu-luong-truy-cap-va-giam-do-tre\">Accurate DNS record setup helps optimize traffic and reduce latency<\/h2><h3>How DNS records affect page load performance<\/h3><p>Accurately configuring records like A record, CNAME, and TTL helps browsers query faster and reduces unnecessary lookups. For example, changing TTL from 86400 seconds to 3600 can reduce update wait time to under 1 hour.<\/p><p>According to Cloudflare's report (2022), using high-performance DNS can reduce page load latency by up to 20-40% in Southeast Asia.<\/p><div class=\"wp-block-group has-background\">\n<p><strong>Tip:<\/strong> Avoid pointing CNAME to slow servers or those without CDN; prioritize Anycast DNS platforms like Cloudflare or Google DNS.<\/p>\n<\/div><h3>Important DNS records that need correct configuration<\/h3><p>Below are common records that need to be configured carefully:<\/p><ul>\n<li><strong>A record<\/strong>: Point to the correct main server IP<\/li>\n<li><strong>CNAME<\/strong>: Used to point subdomains to the main domain<\/li>\n<li><strong>MX record<\/strong>: Ensure business email is not interrupted<\/li>\n<li><strong>TXT record (SPF, DKIM)<\/strong>: Secure email sending, prevent spam<\/li>\n<\/ul><h3>Standard DNS setup checklist<\/h3><ul>\n<li>\u2714 Check that the A record points to the correct server IP<\/li>\n<li>\u2714 Set an appropriate TTL (1h-6h for frequently updated sites)<\/li>\n<li>\u2714 Enable DNSSEC (if supported by your provider)<\/li>\n<li>\u2714 Ensure all subdomains have accurate SPF records<\/li>\n<\/ul><h3>Case study: Changing records helps reduce response time by 35%<\/h3><p>An E-learning customer changed their CNAME record from a free DNS service to Cloudflare Pro. After 7 days, using the WebPageTest tool, average latency decreased from 320ms to 205ms \u2013 a 35% reduction. No backend code changes.<\/p><table class=\"WordPress\">\n<thead>\n<tr>\n<th>Parameters<\/th>\n<th>Before<\/th>\n<th>After<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DNS Resolution Time<\/td>\n<td>320ms<\/td>\n<td>205ms<\/td>\n<\/tr>\n<tr>\n<td>CDN Routing<\/td>\n<td>None<\/td>\n<td>Yes<\/td>\n<\/tr>\n<\/tbody>\n<\/table><h3>Common risks when misconfiguring DNS<\/h3><ul>\n<li>Warning: Incorrect A record configuration can cause the website to go offline immediately<\/li>\n<li>TTL set too low causes continuous queries, affecting DNS performance<\/li>\n<li>Incorrect SPF record can cause emails to be blocked or marked as spam<\/li>\n<\/ul><div class=\"wp-block-group has-background\">\n<p><strong>Tip:<\/strong> After each DNS change, use tools like dig, nslookup, or dnschecker.org to verify that the record has been updated correctly.<\/p>\n<\/div><h3>Takeaway:<\/h3><p>Accurate DNS setup is the foundation for a fast-loading, secure, and stable website. Optimize every record \u2013 starting from the A record configuration \u2013 to maximize response time efficiency and ensure continuous user experience.<br><img decoding=\"async\" class=\"kimage_class\" src=\"https:\/\/dps.media\/wp-content\/uploads\/2025\/08\/xample.jpg\" alt=\"Implement DNSSEC to protect your website from spoofing and fake DNS attacks\" title=\"\"><\/p><h2 id=\"trien-khai-dnssec-de-bao-ve-website-khoi-cac-cuoc-tan-cong-gia-mao-va-gia-dns\">Implementing DNSSEC to protect your website from spoofing and fake DNS attacks<\/h2><h3>What is DNSSEC and why is it necessary?<\/h3><p>DNSSEC (Domain Name System Security Extensions) is a set of extensions to traditional DNS protocols that helps authenticate the origin of DNS data. <\/p><p>Without DNSSEC:<\/p><p>\u2013 DNS data is vulnerable to \u201cman-in-the-middle\u201d attacks\u201d<br>\n\u2013 Hackers can redirect access to fake websites<br>\n\u2013 End users find it difficult to distinguish the real website<\/p><p>According to the Global Cyber Alliance 2023 report, 29% of DNS phishing incidents are due to improper DNSSEC implementation.<\/p><div class=\"wp-block-group has-background\">\n  <strong>TIP:<\/strong> Implementing DNSSEC does not speed up page loading, but it increases website reliability in terms of domain name security.\n<\/div><h3>Practical benefits of applying DNSSEC<\/h3><p>Organizations that have implemented DNSSEC report:<\/p><p>\u2013 Reduces 40-60% risk of domain spoofing (According to Verisign, 2021)<br>\n\u2013 When combined with HTTPS and HSTS, system reliability increases significantly<br>\n\u2013 Helps increase credibility when registering security services (SSL\/TLS, DMARC...)<\/p><p>A real-world example: A mid-sized e-commerce business in Ho Chi Minh City experienced a DNS spoofing incident in 2022, causing nearly 12% of access over 3 days to be redirected to a phishing website \u2013 this incident was completely resolved after activating DNSSEC on Cloudflare DNS.<\/p><h3>Simple steps to implement DNSSEC<\/h3><p>Implementation checklist for popular DNS systems:<\/p><ul>\n<li>\u2705 Verify that your DNS provider supports DNSSEC (GoDaddy, Cloudflare, etc.)<\/li>\n<li>\u2705 Enable DNSSEC in the DNS control panel<\/li>\n<li>\u2705 Update the DS Record on the domain management system (such as VNNIC or Namecheap)<\/li>\n<li>\u2705 Check DNS signature authentication using tools like dig or dnsviz.net<\/li>\n<\/ul><table class=\"WordPress\">\n<thead>\n<tr>\n<th>DNS Provider<\/th>\n<th>DNSSEC Support<\/th>\n<th>Easy Deployment<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Cloudflare<\/td>\n<td>Available<\/td>\n<td>\u2714\ufe0f With just 1 toggle<\/td>\n<\/tr>\n<tr>\n<td>Google Domains<\/td>\n<td>Yes<\/td>\n<td>\u2714\ufe0f Automatic Configuration<\/td>\n<\/tr>\n<tr>\n<td>GoDaddy<\/td>\n<td>Premium Package<\/td>\n<td>\u26a0\ufe0f Additional purchase required<\/td>\n<\/tr>\n<\/tbody>\n<\/table><h3>Considerations before deployment<\/h3><p>\u2013 Incorrect DS Record deployment can make the website inaccessible<br>\n\u2013 Requires coordination between the DNS administrator and the domain registrar<br>\n\u2013 Backup old DNS configurations to rollback if issues occur<\/p><p>DPS.MEDIA recommends SMEs test DNSSEC in a test environment before rolling it out system-wide.<\/p><div class=\"wp-block-group has-background\">\n  <strong>Takeaway:<\/strong> DNSSEC is not just a security standard, but also an important step to protect customer trust in the \u201czero trust\u201d era.\n<\/div><p><img decoding=\"async\" class=\"kimage_class\" src=\"https:\/\/dps.media\/wp-content\/uploads\/2025\/08\/srr_02.jpg\" alt=\"Use CDN combined with DNS configuration to improve page load speed in all regions\" title=\"\"><\/p><h2 id=\"su-dung-cdn-ket-hop-voi-cau-hinh-dns-de-nang-cao-toc-do-tai-trang-o-moi-vung-mien\">Using CDN combined with DNS configuration to improve page load speed in all regions<\/h2><h3>Reasons to combine CDN and smart DNS<\/h3><p>\u2013 <strong>CDN (Content Delivery Network)<\/strong> helps distribute content through servers closest to users, reducing latency when accessing.<br>\n\u2013 DNS is the first layer determining the routing speed to the CDN server - if configured correctly, retrieval time is significantly reduced.<br>\n\u2013 According to a report from Cloudflare (2023), average page load time is shortened by 30-45% when there is good coordination between CDN and distributed DNS architecture.<\/p><div class=\"wp-block-group has-background\">\n<p><strong>TIP:<\/strong> Always choose a DNS provider with global infrastructure coverage and Anycast support (such as Cloudflare or Google DNS) to optimize routing.<\/p>\n<\/div><h3>Checklist for effective CDN &amp; DNS configuration<\/h3><ul>\n<li>\u2714 Set up a CDN such as Cloudflare, Akamai, or BunnyCDN, prioritizing servers in the target region.<\/li>\n<li>\u2714 Point the domain to an intermediary DNS integrated with CDN (or use a custom DNS that supports low TTL).<\/li>\n<li>\u2714 Enable automatic static caching and GZIP compression from the CDN side.<\/li>\n<li>\u2714 Configure Domain CNAME or A record to ensure compatibility and avoid timeouts.<\/li>\n<li>\u2714 Check DNS propagation using tools like What's my DNS to evaluate stability.<\/li>\n<\/ul><h3>DNS configuration illustration combined with CDN (HTML Table)<\/h3><table class=\"WordPress\">\n<thead>\n<tr>\n<th>Record Type<\/th>\n<th>Value<\/th>\n<th>Function<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>A record<\/td>\n<td>192.0.2.1<\/td>\n<td>Point to the original CDN IP address<\/td>\n<\/tr>\n<tr>\n<td>CNAME<\/td>\n<td>cdn.example.com<\/td>\n<td>Point subdomain to CDN resources<\/td>\n<\/tr>\n<tr>\n<td>TTL<\/td>\n<td>300s<\/td>\n<td>Reduce DNS update latency<\/td>\n<\/tr>\n<\/tbody>\n<\/table><h3>Real-world examples &amp; effectiveness<\/h3><p>A customer in Da Nang using DPS.MEDIA combined with Global CDN and Anycast DNS improved page load time from 4.2s to 1.7s (measured by GTmetrix). International traffic increased by 561% after 30 days of deployment\u2014thanks to improved access from the US and Japan.<\/p><div class=\"wp-block-group has-background\">\n<p><strong>NOTE:<\/strong> Not all CDNs are fully compatible with your current DNS system. You should test partitioning before large-scale deployment.<\/p>\n<\/div><h3>Brief takeaway<\/h3><p>Optimal combination between <strong>CDN and smart DNS<\/strong> helps speed up global website loading and reduces pressure on the origin server. This is a technical foundation that should be prioritized early in a sustainable website acceleration strategy.<br><img decoding=\"async\" class=\"kimage_class\" src=\"https:\/\/dps.media\/wp-content\/uploads\/2025\/08\/server.jpg\" alt=\"Monitor and regularly update DNS configuration to ensure continuous and stable operation\" title=\"\"><\/p><h2 id=\"theo-doi-va-cap-nhat-dinh-ky-cau-hinh-dns-nham-dam-bao-van-hanh-lien-tuc-va-on-dinh\">Monitor and periodically update DNS configuration to ensure continuous and stable operation<\/h2><h3>Why is it necessary to monitor DNS regularly?<\/h3><p>Monitoring DNS configuration not only helps detect issues early but also maintains page load performance and security. According to a report from Uptime Institute (2023), 28% of website outages lasting more than 30 minutes are caused by DNS misconfiguration or update errors.<\/p><p>Here are the main reasons for regular monitoring:<\/p><ul>\n<li><strong>Domain name retrieval error detected<\/strong> due to incorrect A\/AAAA record<\/li>\n<li><strong>Avoid DNS abuse<\/strong> used as a DDoS attack vector<\/li>\n<li><strong>Ensure TTL time<\/strong> is optimized for page load speed<\/li>\n<\/ul><h3>Recommended periodic check schedule<\/h3><p>Regular updates help respond quickly to changes in server IP, hosting, or related service records. Some organizations perform weekly checks, but most SMEs should set up <strong>a 2-week cycle<\/strong> higher reliability.<\/p><p>Quickly check the following items:<\/p><div class=\"WordPress\">\n<table>\n<thead>\n<tr>\n<th>Item to check<\/th>\n<th>Recommended cycle<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>A\/AAAA record<\/td>\n<td>2 weeks<\/td>\n<\/tr>\n<tr>\n<td>MX record (email)<\/td>\n<td>1 month<\/td>\n<\/tr>\n<tr>\n<td>TXT record (SPF, DKIM)<\/td>\n<td>1 month<\/td>\n<\/tr>\n<tr>\n<td>Reverse DNS<\/td>\n<td>2 months<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div><h3>Notes when updating incorrect DNS configuration<\/h3><p>Careless DNS editing can cause temporary disconnection. For example: A small business accidentally deleted the MX record during editing, causing internal email disruption for over 14 hours\u2014even though it only took 1 minute to fix after discovery.<\/p><div class=\"wp-block-group has-background\" style=\"background-color:#f8f9fa;padding:15px;border-left:4px solid #0073aa\">\n  <strong>Tip:<\/strong> Always back up DNS configuration before editing and use tools like DNSMap or DNSCheck to verify after making changes.\n<\/div><h3>Periodic DNS monitoring checklist<\/h3><ul>\n<li>\u2705 Check IP match in A record<\/li>\n<li>\u2705 Ensure CNAME does not create a loop<\/li>\n<li>\u2705 Review TTL time according to access level<\/li>\n<li>\u2705 Verify DKIM, SPF signatures for no errors<\/li>\n<li>\u2705 Record changes and reconciliation logs<\/li>\n<\/ul><h3>Brief takeaway<\/h3><p>Monitoring and adjusting DNS at the right frequency helps the website operate stably, avoiding service interruptions due to configuration errors. Consider DNS not only as a technical factor but also as <strong>\u201cpotential bottleneck\u201d<\/strong> affecting the entire digital system of the business.<br><img decoding=\"async\" class=\"kimage_class\" src=\"https:\/\/dps.media\/wp-content\/uploads\/2025\/08\/ration.jpg\" alt=\"Quick DNS backup and recovery strategy in case of incidents ensures website sustainability\" title=\"\"><\/p><h2 id=\"chien-luoc-sao-luu-va-phuc-hoi-dns-nhanh-chong-khi-gap-su-co-dam-bao-tinh-ben-vung-cho-website\">Backup and rapid DNS recovery strategy to ensure website sustainability in case of incidents<\/h2><h3>DNS contingency plan: Why is it important?<\/h3><p>Loss of connection due to DNS issues can cause website disruption from a few minutes to several hours \u2013 directly affecting revenue and reputation. According to the Uptime Institute 2023 report, 60% of businesses lose over 100,000 USD for each hour of downtime.<\/p><p>Below are the negative impacts if there is no DNS recovery strategy:<\/p><p>\u2013 Loss of customers due to inaccessible website<br>\n\u2013 Temporary SEO ranking drop if crawls continuously return errors<br>\n\u2013 Disruption of email, API, subdomain services<\/p><div class=\"wp-block-group has-background\">\n  <strong>TIP:<\/strong> Applying a multi-provider DNS model can improve recovery capability by 3 times compared to using only one provider.\n<\/div><h3>Configuration checklist for effective DNS backup and recovery<\/h3><p>Take the following steps to protect your website when DNS issues occur:<\/p><ul>\n<li>Settings <strong>2 parallel DNS systems<\/strong>: For example, use Cloudflare combined with Amazon Route 53<\/li>\n<li>Automation <strong>backup DNS configuration<\/strong> weekly (via API or manual export)<\/li>\n<li>Configure short TTL (from 60-300 seconds) to reduce latency when switching to backup DNS<\/li>\n<li>Quarterly simulated DNS disaster recovery test<\/li>\n<li>Set up alert monitoring via Pingdom, StatusCake, or UptimeRobot<\/li>\n<\/ul><h3>Real-world examples of DNS incidents &amp; handling methods<\/h3><p>In July 2022, an online retail business in Vietnam experienced a DNS incident due to an SOA configuration error, causing the website to be down for 1 hour. Thanks to a pre-connected secondary DNS at DigitalOcean, <a href=\"https:\/\/dps.media\/en\/bulk-dns-lookup-optimized-solution-for-domain-name-management\/\" rel=\"nofollow\">they recovered service after 5 minutes \u2013 minimizing predicted losses from 30 million VND to less than 2 million VND<\/a>.<\/p><h3>Quick comparison table of primary DNS &amp; backup DNS<\/h3><table class=\"WordPress\">\n<thead>\n<tr>\n<th>Criteria<\/th>\n<th>Primary DNS<\/th>\n<th>Backup DNS<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Response speed<\/td>\n<td>20-50ms<\/td>\n<td>30-70ms<\/td>\n<\/tr>\n<tr>\n<td>Uptime level<\/td>\n<td>99.99%<\/td>\n<td>99.9%<\/td>\n<\/tr>\n<tr>\n<td>Automatic activation capability<\/td>\n<td>No<\/td>\n<td>Yes (if health check is configured)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><h3>Risk warning when there is no DNS backup solution<\/h3><p>\u2013 DNS data modified or overwritten due to permission vulnerabilities<br>\n\u2013 DNS hit by DDoS causing the entire website system to crash completely<br>\n\u2013 DNS resolver returns no results \u2013 response time can extend &gt; 10 seconds<\/p><p><em>Without preparation, even minor DNS errors can cause significant losses.<\/em><\/p><h3>Takeaway summary<\/h3><p><strong>Website sustainability starts with the ability to recover the DNS system.<\/strong> Establishing a professional backup and redundant DNS system will help businesses operate stably, avoid major damage, and maintain a smooth user experience even during incidents. - DPS.MEDIA JSC - <\/p><h2 id=\"outro\">Your past journey<\/h2><p>Proper DNS configuration helps improve page load speed and enhance website security. This is a foundational factor for user experience and SEO performance.<\/p><p>Check your current DNS configuration today. Apply the shared principles to optimize your website more effectively.<\/p><p>You can also learn more about how to choose the right CDN or techniques to mitigate DDoS attacks. These topics contribute to a comprehensive website security strategy.<\/p><p>DPS.MEDIA is always ready to accompany SMEs to optimize digital infrastructure. Don't hesitate to share your thoughts or ask questions by commenting below! <\/p>\n<style>\r\n.lwrp.link-whisper-related-posts{\r\n            \r\n            margin-top: 40px;\nmargin-bottom: 30px;\r\n        }\r\n        .lwrp .lwrp-title{\r\n            \r\n            \r\n        }.lwrp .lwrp-description{\r\n            \r\n            \r\n\r\n        }\r\n        .lwrp .lwrp-list-container{\r\n        }\r\n        .lwrp .lwrp-list-multi-container{\r\n            display: flex;\r\n        }\r\n        .lwrp .lwrp-list-double{\r\n            width: 48%;\r\n        }\r\n        .lwrp .lwrp-list-triple{\r\n            width: 32%;\r\n        }\r\n        .lwrp .lwrp-list-row-container{\r\n            display: flex;\r\n            justify-content: space-between;\r\n        }\r\n        .lwrp .lwrp-list-row-container .lwrp-list-item{\r\n            width: calc(33% - 20px);\r\n        }\r\n        .lwrp .lwrp-list-item:not(.lwrp-no-posts-message-item){\r\n            \r\n            max-width: 150px;\r\n        }\r\n        .lwrp .lwrp-list-item img{\r\n            max-width: 100%;\r\n            height: auto;\r\n            object-fit: cover;\r\n            aspect-ratio: 1 \/ 1;\r\n        }\r\n        .lwrp .lwrp-list-item.lwrp-empty-list-item{\r\n            background: initial !important;\r\n        }\r\n        .lwrp .lwrp-list-item .lwrp-list-link .lwrp-list-link-title-text,\r\n        .lwrp .lwrp-list-item .lwrp-list-no-posts-message{\r\n            \r\n            \r\n            \r\n            \r\n        }@media screen and (max-width: 480px) {\r\n            .lwrp.link-whisper-related-posts{\r\n                \r\n                \r\n            }\r\n            .lwrp .lwrp-title{\r\n                \r\n                \r\n            }.lwrp .lwrp-description{\r\n                \r\n                \r\n            }\r\n            .lwrp .lwrp-list-multi-container{\r\n                flex-direction: column;\r\n            }\r\n            .lwrp .lwrp-list-multi-container ul.lwrp-list{\r\n                margin-top: 0px;\r\n                margin-bottom: 0px;\r\n                padding-top: 0px;\r\n                padding-bottom: 0px;\r\n            }\r\n            .lwrp .lwrp-list-double,\r\n            .lwrp .lwrp-list-triple{\r\n                width: 100%;\r\n            }\r\n            .lwrp .lwrp-list-row-container{\r\n                justify-content: initial;\r\n                flex-direction: column;\r\n            }\r\n            .lwrp .lwrp-list-row-container .lwrp-list-item{\r\n                width: 100%;\r\n            }\r\n            .lwrp .lwrp-list-item:not(.lwrp-no-posts-message-item){\r\n                \r\n                max-width: initial;\r\n            }\r\n            .lwrp .lwrp-list-item .lwrp-list-link .lwrp-list-link-title-text,\r\n            .lwrp .lwrp-list-item .lwrp-list-no-posts-message{\r\n                \r\n                \r\n                \r\n                \r\n            };\r\n        }<\/style>\r\n<div id=\"link-whisper-related-posts-widget\" class=\"link-whisper-related-posts lwrp\">\r\n            <div class=\"lwrp-title\">Related Posts<\/div>    \r\n        <div class=\"lwrp-list-container\">\r\n                                <div class=\"lwrp-list lwrp-list-row-container lwrp-list-double-row\">\r\n                <div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/national-day-02-09-marketing-campaign-is-impressive\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Impressive National Day 09\/02 Marketing Campaign<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/guide-on-how-to-register-for-selling-on-shopee-food\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">How to Register to Sell on Shopee Food<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/guide-to-analyzing-a-b-testing-tiktok-ads\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Guide to Analyzing A\/B Testing for TikTok Ads<\/span><\/a><\/div>                <\/div>\r\n                            <div class=\"lwrp-list lwrp-list-row-container lwrp-list-double-row\">\r\n                <div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/which-top-10-google-advertising-companies-are-the-best-choices\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Which Google Advertising Company is Good? Top 10 Best Choices<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/creative-professional-graphic-design-service-to-increase-brand-recognition\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Creative Graphic Design Services, Professional \u2013 Increase Brand Recognition<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/en\/effective-restaurant-marketing-from-a-to-z\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Effective Marketing Methods for Restaurants from A to Z<\/span><\/a><\/div>                <\/div>\r\n                <\/div>\r\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Proper DNS configuration not only helps your website load faster but also enhances security layers against cyber threats. Discover how to optimize DNS for a smoother and safer web experience.<\/p>","protected":false},"author":1,"featured_media":29525,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[70],"tags":[1096],"class_list":["post-29524","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tin-tuc","tag-quan-tri-he-thong"],"acf":[],"rankmath_keywords":{"primary":"","secondary":[""]},"yoast_keywords":{"primary":"","secondary":[]},"yoast_focuskw":"","rankmath_focuskw":"","seo_keywords":{"primary":"","secondary":[""]},"_links":{"self":[{"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts\/29524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/comments?post=29524"}],"version-history":[{"count":2,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts\/29524\/revisions"}],"predecessor-version":[{"id":36041,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts\/29524\/revisions\/36041"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/media\/29525"}],"wp:attachment":[{"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/media?parent=29524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/categories?post=29524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/tags?post=29524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}