浏览代码

refactor: nginx params optimization #236

Jacky 3 周之前
父节点
当前提交
16369bc635
共有 34 个文件被更改,包括 3649 次插入1345 次删除
  1. 4 5
      api/nginx/performance.go
  2. 11 10
      api/nginx/status.go
  3. 42 19
      app/src/api/ngx.ts
  4. 2 1
      app/src/components/EnvGroupTabs/EnvGroupTabs.vue
  5. 1 1
      app/src/components/SystemRestore/SystemRestoreContent.vue
  6. 186 58
      app/src/language/ar/app.po
  7. 186 58
      app/src/language/de_DE/app.po
  8. 183 58
      app/src/language/en/app.po
  9. 186 58
      app/src/language/es/app.po
  10. 185 58
      app/src/language/fr_FR/app.po
  11. 185 58
      app/src/language/ko_KR/app.po
  12. 177 58
      app/src/language/messages.pot
  13. 186 58
      app/src/language/ru_RU/app.po
  14. 186 58
      app/src/language/tr_TR/app.po
  15. 183 58
      app/src/language/vi_VN/app.po
  16. 200 69
      app/src/language/zh_CN/app.po
  17. 186 58
      app/src/language/zh_TW/app.po
  18. 1 1
      app/src/views/config/ConfigEditor.vue
  19. 2 2
      app/src/views/dashboard/NginxDashBoard.vue
  20. 126 0
      app/src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue
  21. 449 0
      app/src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue
  22. 44 0
      app/src/views/dashboard/components/ParamsOpt/SizeInput.vue
  23. 53 0
      app/src/views/dashboard/components/ParamsOpt/TimeInput.vue
  24. 130 0
      app/src/views/dashboard/components/ParamsOptimization.vue
  25. 0 327
      app/src/views/dashboard/components/PerformanceOptimization.vue
  26. 4 4
      app/src/views/site/cert/Cert.vue
  27. 2 1
      app/uno.config.ts
  28. 0 135
      internal/config/perf_opt.go
  29. 0 122
      internal/nginx/config_info.go
  30. 246 0
      internal/performance/config_info.go
  31. 289 0
      internal/performance/perf_opt.go
  32. 6 3
      internal/performance/performance.go
  33. 1 1
      internal/performance/process_info.go
  34. 7 6
      internal/performance/stub_status.go

+ 4 - 5
api/nginx/performance.go

@@ -3,8 +3,7 @@ package nginx
 import (
 import (
 	"net/http"
 	"net/http"
 
 
-	"github.com/0xJacky/Nginx-UI/internal/config"
-	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/0xJacky/Nginx-UI/internal/performance"
 	"github.com/gin-gonic/gin"
 	"github.com/gin-gonic/gin"
 	"github.com/uozi-tech/cosy"
 	"github.com/uozi-tech/cosy"
 )
 )
@@ -12,7 +11,7 @@ import (
 // GetPerformanceSettings retrieves current Nginx performance settings
 // GetPerformanceSettings retrieves current Nginx performance settings
 func GetPerformanceSettings(c *gin.Context) {
 func GetPerformanceSettings(c *gin.Context) {
 	// Get Nginx worker configuration info
 	// Get Nginx worker configuration info
-	perfInfo, err := nginx.GetNginxWorkerConfigInfo()
+	perfInfo, err := performance.GetNginxWorkerConfigInfo()
 	if err != nil {
 	if err != nil {
 		cosy.ErrHandler(c, err)
 		cosy.ErrHandler(c, err)
 		return
 		return
@@ -22,12 +21,12 @@ func GetPerformanceSettings(c *gin.Context) {
 
 
 // UpdatePerformanceSettings updates Nginx performance settings
 // UpdatePerformanceSettings updates Nginx performance settings
 func UpdatePerformanceSettings(c *gin.Context) {
 func UpdatePerformanceSettings(c *gin.Context) {
-	var perfOpt config.PerfOpt
+	var perfOpt performance.PerfOpt
 	if !cosy.BindAndValid(c, &perfOpt) {
 	if !cosy.BindAndValid(c, &perfOpt) {
 		return
 		return
 	}
 	}
 
 
-	err := config.UpdatePerfOpt(&perfOpt)
+	err := performance.UpdatePerfOpt(&perfOpt)
 	if err != nil {
 	if err != nil {
 		cosy.ErrHandler(c, err)
 		cosy.ErrHandler(c, err)
 		return
 		return

+ 11 - 10
api/nginx/status.go

@@ -10,6 +10,7 @@ import (
 	"time"
 	"time"
 
 
 	"github.com/0xJacky/Nginx-UI/internal/nginx"
 	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/0xJacky/Nginx-UI/internal/performance"
 	"github.com/gin-gonic/gin"
 	"github.com/gin-gonic/gin"
 	"github.com/uozi-tech/cosy"
 	"github.com/uozi-tech/cosy"
 	"github.com/uozi-tech/cosy/logger"
 	"github.com/uozi-tech/cosy/logger"
@@ -18,18 +19,18 @@ import (
 // NginxPerformanceInfo stores Nginx performance-related information
 // NginxPerformanceInfo stores Nginx performance-related information
 type NginxPerformanceInfo struct {
 type NginxPerformanceInfo struct {
 	// Basic status information
 	// Basic status information
-	nginx.StubStatusData
+	performance.StubStatusData
 
 
 	// Process-related information
 	// Process-related information
-	nginx.NginxProcessInfo
+	performance.NginxProcessInfo
 
 
 	// Configuration information
 	// Configuration information
-	nginx.NginxConfigInfo
+	performance.NginxConfigInfo
 }
 }
 
 
 // GetDetailStatus retrieves detailed Nginx status information
 // GetDetailStatus retrieves detailed Nginx status information
 func GetDetailStatus(c *gin.Context) {
 func GetDetailStatus(c *gin.Context) {
-	response := nginx.GetPerformanceData()
+	response := performance.GetPerformanceData()
 	c.JSON(http.StatusOK, response)
 	c.JSON(http.StatusOK, response)
 }
 }
 
 
@@ -70,7 +71,7 @@ func StreamDetailStatus(c *gin.Context) {
 
 
 // sendPerformanceData sends performance data once
 // sendPerformanceData sends performance data once
 func sendPerformanceData(c *gin.Context) error {
 func sendPerformanceData(c *gin.Context) error {
-	response := nginx.GetPerformanceData()
+	response := performance.GetPerformanceData()
 
 
 	// Send SSE event
 	// Send SSE event
 	c.SSEvent("message", response)
 	c.SSEvent("message", response)
@@ -82,7 +83,7 @@ func sendPerformanceData(c *gin.Context) error {
 
 
 // CheckStubStatus gets Nginx stub_status module status
 // CheckStubStatus gets Nginx stub_status module status
 func CheckStubStatus(c *gin.Context) {
 func CheckStubStatus(c *gin.Context) {
-	stubStatus := nginx.GetStubStatus()
+	stubStatus := performance.GetStubStatus()
 
 
 	c.JSON(http.StatusOK, stubStatus)
 	c.JSON(http.StatusOK, stubStatus)
 }
 }
@@ -97,7 +98,7 @@ func ToggleStubStatus(c *gin.Context) {
 		return
 		return
 	}
 	}
 
 
-	stubStatus := nginx.GetStubStatus()
+	stubStatus := performance.GetStubStatus()
 
 
 	// If current status matches desired status, no action needed
 	// If current status matches desired status, no action needed
 	if stubStatus.Enabled == json.Enable {
 	if stubStatus.Enabled == json.Enable {
@@ -107,9 +108,9 @@ func ToggleStubStatus(c *gin.Context) {
 
 
 	var err error
 	var err error
 	if json.Enable {
 	if json.Enable {
-		err = nginx.EnableStubStatus()
+		err = performance.EnableStubStatus()
 	} else {
 	} else {
-		err = nginx.DisableStubStatus()
+		err = performance.DisableStubStatus()
 	}
 	}
 
 
 	if err != nil {
 	if err != nil {
@@ -126,7 +127,7 @@ func ToggleStubStatus(c *gin.Context) {
 	}
 	}
 
 
 	// Check status after operation
 	// Check status after operation
-	newStubStatus := nginx.GetStubStatus()
+	newStubStatus := performance.GetStubStatus()
 
 
 	c.JSON(http.StatusOK, newStubStatus)
 	c.JSON(http.StatusOK, newStubStatus)
 }
 }

+ 42 - 19
app/src/api/ngx.ts

@@ -35,37 +35,59 @@ export interface NgxLocation {
 
 
 export type DirectiveMap = Record<string, { links: string[] }>
 export type DirectiveMap = Record<string, { links: string[] }>
 
 
+export interface ProxyCacheConfig {
+  enabled: boolean
+  path: string
+  levels: string
+  use_temp_path: string
+  keys_zone: string
+  inactive: string
+  max_size: string
+  min_free: string
+  manager_files: string
+  manager_sleep: string
+  manager_threshold: string
+  loader_files: string
+  loader_sleep: string
+  loader_threshold: string
+  purger: string
+  purger_files: string
+  purger_sleep: string
+  purger_threshold: string
+}
+
 export interface NginxPerformanceInfo {
 export interface NginxPerformanceInfo {
-  active: number // 活动连接数
-  accepts: number // 总握手次数
-  handled: number // 总连接次数
-  requests: number // 总请求数
-  reading: number // 读取客户端请求数
-  writing: number // 响应数
-  waiting: number // 驻留进程(等待请求)
-  workers: number // 工作进程数
-  master: number // 主进程数
-  cache: number // 缓存管理进程数
-  other: number // 其他Nginx相关进程数
-  cpu_usage: number // CPU 使用率
-  memory_usage: number // 内存使用率(MB)
-  worker_processes: number // worker_processes 配置
-  worker_connections: number // worker_connections 配置
-  process_mode: string // worker进程配置模式:'auto'或'manual'
+  active: number // Number of active connections
+  accepts: number // Total number of accepted connections
+  handled: number // Total number of handled connections
+  requests: number // Total number of requests
+  reading: number // Number of connections reading request data
+  writing: number // Number of connections writing response data
+  waiting: number // Number of idle connections waiting for requests
+  workers: number // Number of worker processes
+  master: number // Number of master processes
+  cache: number // Number of cache manager processes
+  other: number // Number of other Nginx-related processes
+  cpu_usage: number // CPU usage percentage
+  memory_usage: number // Memory usage in MB
+  worker_processes: number // worker_processes configuration
+  worker_connections: number // worker_connections configuration
+  process_mode: string // Worker process configuration mode: 'auto' or 'manual'
 }
 }
 
 
 export interface NginxConfigInfo {
 export interface NginxConfigInfo {
-  worker_processes: number
+  worker_processes: string
   worker_connections: number
   worker_connections: number
   process_mode: string
   process_mode: string
-  keepalive_timeout: number
+  keepalive_timeout: string
   gzip: string
   gzip: string
   gzip_min_length: number
   gzip_min_length: number
   gzip_comp_level: number
   gzip_comp_level: number
   client_max_body_size: string
   client_max_body_size: string
-  server_names_hash_bucket_size: number
+  server_names_hash_bucket_size: string
   client_header_buffer_size: string
   client_header_buffer_size: string
   client_body_buffer_size: string
   client_body_buffer_size: string
+  proxy_cache: ProxyCacheConfig
 }
 }
 
 
 export interface NginxPerfOpt {
 export interface NginxPerfOpt {
@@ -79,6 +101,7 @@ export interface NginxPerfOpt {
   server_names_hash_bucket_size: string
   server_names_hash_bucket_size: string
   client_header_buffer_size: string
   client_header_buffer_size: string
   client_body_buffer_size: string
   client_body_buffer_size: string
+  proxy_cache: ProxyCacheConfig
 }
 }
 
 
 const ngx = {
 const ngx = {

+ 2 - 1
app/src/components/EnvGroupTabs/EnvGroupTabs.vue

@@ -20,7 +20,8 @@ const loading = ref({
   restart: false,
   restart: false,
 })
 })
 
 
-// 使用SSE composable
+// Use SSE composable
+// Error handling is implemented internally by useSSE with automatic reconnection
 const { connect, disconnect } = useSSE()
 const { connect, disconnect } = useSSE()
 
 
 // Get node data when tab is not 'All'
 // Get node data when tab is not 'All'

+ 1 - 1
app/src/components/SystemRestore/SystemRestoreContent.vue

@@ -35,7 +35,7 @@ const formModel = reactive({
   verifyHash: true,
   verifyHash: true,
 })
 })
 
 
-// 添加两个变量控制模态框显示和倒计时
+// Add two variables to control modal display and countdown
 const showRestoreModal = ref(false)
 const showRestoreModal = ref(false)
 const countdown = ref(5)
 const countdown = ref(5)
 const countdownTimer = ref<ReturnType<typeof setInterval> | null>(null)
 const countdownTimer = ref<ReturnType<typeof setInterval> | null>(null)

+ 186 - 58
app/src/language/ar/app.po

@@ -117,7 +117,7 @@ msgstr "الوضع المتقدم"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "بعد ذلك، قم بتحديث هذه الصفحة وانقر فوق إضافة مفتاح مرور مرة أخرى."
 msgstr "بعد ذلك، قم بتحديث هذه الصفحة وانقر فوق إضافة مفتاح مرور مرة أخرى."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr "الكل"
 msgstr "الكل"
@@ -214,7 +214,7 @@ msgstr "هل أنت متأكد أنك تريد الحذف؟"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "هل أنت متأكد أنك تريد استرداد هذا العنصر؟"
 msgstr "هل أنت متأكد أنك تريد استرداد هذا العنصر؟"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "هل أنت متأكد أنك تريد الحذف؟"
 msgstr "هل أنت متأكد أنك تريد الحذف؟"
@@ -231,7 +231,7 @@ msgstr "هل أنت متأكد أنك تريد إزالة هذا العنصر؟"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "هل أنت متأكد أنك تريد إزالة هذا المكان؟"
 msgstr "هل أنت متأكد أنك تريد إزالة هذا المكان؟"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "هل أنت متأكد أنك تريد مسح كافة التنبيهات؟"
 msgstr "هل أنت متأكد أنك تريد مسح كافة التنبيهات؟"
@@ -270,8 +270,8 @@ msgstr "إعدادات المصادقة"
 msgid "Author"
 msgid "Author"
 msgstr "الكاتب"
 msgstr "الكاتب"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr ""
 msgstr ""
 
 
@@ -365,6 +365,11 @@ msgstr "أساسي"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "الوضع الأساسي"
 msgstr "الوضع الأساسي"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+#, fuzzy
+msgid "Basic Settings"
+msgstr "إعدادات المصادقة الثنائية"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #, fuzzy
 #, fuzzy
 msgid "Batch Actions"
 msgid "Batch Actions"
@@ -395,16 +400,45 @@ msgstr "بناء مع"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr "مجلد سلطة التصديق"
 msgstr "مجلد سلطة التصديق"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "المسار المتغير"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr "مجلد سلطة التصديق"
 msgstr "مجلد سلطة التصديق"
@@ -629,23 +663,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -681,7 +715,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -732,7 +766,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr "تم فقدان الاتصال، يرجى تحديث الصفحة."
 msgstr "تم فقدان الاتصال، يرجى تحديث الصفحة."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -889,6 +923,10 @@ msgstr "أيام"
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "وصف"
 msgstr "وصف"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -1008,6 +1046,15 @@ msgstr ""
 msgid "Directives"
 msgid "Directives"
 msgstr "توجيهات"
 msgstr "توجيهات"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "توجيهات"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #, fuzzy
 #, fuzzy
 msgid "disable"
 msgid "disable"
@@ -1249,7 +1296,7 @@ msgstr "تم تفعيل المصادقة الثنائية بنجاح"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "فشل تفعيل التجديد التلقائي لـ %{name}"
 msgstr "فشل تفعيل التجديد التلقائي لـ %{name}"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1262,6 +1309,10 @@ msgstr "فشل التفعيل"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "تفعيل TOTP"
 msgstr "تفعيل TOTP"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
 msgstr "خطأ في تفعيل الموقع البعيد"
 msgstr "خطأ في تفعيل الموقع البعيد"
@@ -1620,7 +1671,7 @@ msgstr "فشل في الحصول على معلومات الشهادة"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "فشل في الحصول على معلومات الشهادة"
 msgstr "فشل في الحصول على معلومات الشهادة"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "فشل في الحصول على معلومات الشهادة"
 msgstr "فشل في الحصول على معلومات الشهادة"
@@ -1693,7 +1744,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "فشل في الحصول على الشهادة"
 msgstr "فشل في الحصول على الشهادة"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "فشل في الحصول على معلومات الشهادة"
 msgstr "فشل في الحصول على معلومات الشهادة"
@@ -1822,15 +1873,15 @@ msgstr "جارٍ الحصول على الشهادة، يرجى الانتظار.
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "وكيل Github"
 msgstr "وكيل Github"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1931,6 +1982,10 @@ msgstr "استيراد"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "استيراد شهادة"
 msgstr "استيراد شهادة"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -2088,17 +2143,13 @@ msgstr "المُصدر: %{issuer}"
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "سر JWT"
 msgstr "سر JWT"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "with a password manager."
 "with a password manager."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2187,6 +2238,24 @@ msgstr "تحميل من الإعدادات"
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "تم التحميل بنجاح"
 msgstr "تم التحميل بنجاح"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "إنشاء ملف"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+#, fuzzy
+msgid "Loader Settings"
+msgstr "تحميل من الإعدادات"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2289,7 +2358,22 @@ msgstr "إدارة المستخدمين"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "شهادة مُدارة"
 msgstr "شهادة مُدارة"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "إدارة المواقع"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "إدارة المواقع"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "إدارة التدفقات"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2324,11 +2408,15 @@ msgstr "الإصدار الحالي"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "الإصدار الحالي"
 msgstr "الإصدار الحالي"
@@ -2338,6 +2426,10 @@ msgstr "الإصدار الحالي"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2355,10 +2447,18 @@ msgstr "الذاكرة والتخزين"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr "دقائق"
 msgstr "دقائق"
@@ -2618,8 +2718,8 @@ msgid ""
 msgstr "خطأ في تحليل تكوين Nginx"
 msgstr "خطأ في تحليل تكوين Nginx"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2722,10 +2822,18 @@ msgstr "الإشعارات"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "لم يتم العثور على الملف"
 msgstr "لم يتم العثور على الملف"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2753,12 +2861,13 @@ msgstr ""
 "قد يتسبب وجوب تثبيت OCSP في حدوث أخطاء لبعض المستخدمين عند الوصول لأول مرة "
 "قد يتسبب وجوب تثبيت OCSP في حدوث أخطاء لبعض المستخدمين عند الوصول لأول مرة "
 "باستخدام Firefox."
 "باستخدام Firefox."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 #, fuzzy
 #, fuzzy
 msgid "Off"
 msgid "Off"
 msgstr "غير متصل"
 msgstr "غير متصل"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2789,7 +2898,8 @@ msgstr "حسنًا"
 msgid "OK"
 msgid "OK"
 msgstr "حسنًا"
 msgstr "حسنًا"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2797,7 +2907,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "بمجرد اكتمال التحقق، سيتم إزالة السجلات."
 msgstr "بمجرد اكتمال التحقق، سيتم إزالة السجلات."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2813,14 +2923,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "أوبن أي آي"
 msgstr "أوبن أي آي"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr "أو"
 msgstr "أو"
@@ -2877,6 +2979,11 @@ msgstr "إدارة المواقع"
 msgid "Params"
 msgid "Params"
 msgstr "عوامل"
 msgstr "عوامل"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr "مفتاح المرور"
 msgstr "مفتاح المرور"
@@ -2931,11 +3038,16 @@ msgstr "نفذ"
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "خطأ في تنفيذ ترقية النواة"
 msgstr "خطأ في تنفيذ ترقية النواة"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+#, fuzzy
+msgid "Performance"
+msgstr "نفذ"
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "تم التعطيل بنجاح"
 msgstr "تم التعطيل بنجاح"
@@ -3227,7 +3339,7 @@ msgstr "ملاحظة الإصدار"
 msgid "Reload"
 msgid "Reload"
 msgstr "إعادة تحميل"
 msgstr "إعادة تحميل"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3256,7 +3368,7 @@ msgstr "خطأ في إعادة تسمية الموقع البعيد"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "تم إعادة تسمية الموقع البعيد بنجاح"
 msgstr "تم إعادة تسمية الموقع البعيد بنجاح"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3416,7 +3528,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr "إعادة تشغيل"
 msgstr "إعادة تشغيل"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
 #, fuzzy
@@ -3443,7 +3555,7 @@ msgstr "خطأ في إعادة تسمية الموقع البعيد"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "تم إعادة تسمية الموقع البعيد بنجاح"
 msgstr "تم إعادة تسمية الموقع البعيد بنجاح"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3605,10 +3717,6 @@ msgstr "امسح رمز الاستجابة السريعة بهاتفك المح
 msgid "SDK"
 msgid "SDK"
 msgstr "حزمة تطوير البرمجيات SDK"
 msgstr "حزمة تطوير البرمجيات SDK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr "تم نسخ السر"
 msgstr "تم نسخ السر"
@@ -3649,11 +3757,11 @@ msgstr "معلومات الخادم"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "معلومات الخادم"
 msgstr "معلومات الخادم"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3707,6 +3815,10 @@ msgid ""
 "com/guide/config-nginx.html for more information"
 "com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr "عرض"
 msgstr "عرض"
@@ -3767,6 +3879,14 @@ msgstr "مجلد"
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "تثبيت"
 msgstr "تثبيت"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "محتوى شهادة SSL"
 msgstr "محتوى شهادة SSL"
@@ -3953,7 +4073,7 @@ msgstr "خطأ في تزامن التكوين"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "تمت مزامنة التكوين بنجاح"
 msgstr "تمت مزامنة التكوين بنجاح"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgid "Sync Nodes"
 msgstr "مزامنة العقد"
 msgstr "مزامنة العقد"
@@ -4411,6 +4531,10 @@ msgstr "استخدم كلمة المرور لمرة واحدة"
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr "استخدم رمز الاسترداد"
 msgstr "استخدم رمز الاسترداد"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 msgid "User"
 msgid "User"
 msgstr "مستخدم"
 msgstr "مستخدم"
@@ -4560,14 +4684,18 @@ msgid ""
 "codes."
 "codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "الإصدار الحالي"
 msgstr "الإصدار الحالي"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4589,8 +4717,8 @@ msgstr "كتابة مفتاح الشهادة الخاص إلى القرص"
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "كتابة الشهادة إلى القرص"
 msgstr "كتابة الشهادة إلى القرص"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 186 - 58
app/src/language/de_DE/app.po

@@ -120,7 +120,7 @@ msgstr ""
 "Anschließend diese Seite aktualisieren und erneut auf Passkey hinzufügen "
 "Anschließend diese Seite aktualisieren und erneut auf Passkey hinzufügen "
 "klicken."
 "klicken."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr "Alle"
 msgstr "Alle"
@@ -225,7 +225,7 @@ msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
@@ -245,7 +245,7 @@ msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
@@ -284,8 +284,8 @@ msgstr "Authentifizierungseinstellungen"
 msgid "Author"
 msgid "Author"
 msgstr "Autor"
 msgstr "Autor"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr ""
 msgstr ""
 
 
@@ -381,6 +381,11 @@ msgstr "Basic-Modus"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "Basic-Modus"
 msgstr "Basic-Modus"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+#, fuzzy
+msgid "Basic Settings"
+msgstr "2FA-Einstellungen"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #, fuzzy
 #, fuzzy
 msgid "Batch Actions"
 msgid "Batch Actions"
@@ -413,16 +418,45 @@ msgstr "Build mit"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr "CA-Verzeichnis"
 msgstr "CA-Verzeichnis"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "Zertifikat ist gültig"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr "CA-Verzeichnis"
 msgstr "CA-Verzeichnis"
@@ -647,23 +681,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -700,7 +734,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -752,7 +786,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr "Ver"
 msgstr "Ver"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -914,6 +948,10 @@ msgstr "Tage"
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "Beschreibung"
 msgstr "Beschreibung"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -1036,6 +1074,15 @@ msgstr ""
 msgid "Directives"
 msgid "Directives"
 msgstr "Anweisung"
 msgstr "Anweisung"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "Anweisung"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #, fuzzy
 #, fuzzy
 msgid "disable"
 msgid "disable"
@@ -1291,7 +1338,7 @@ msgstr "Aktivieren erfolgreich"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Aktiviere automatische Verlängerung fehlgeschlagen für %{name}"
 msgstr "Aktiviere automatische Verlängerung fehlgeschlagen für %{name}"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1304,6 +1351,10 @@ msgstr "Aktivieren fehlgeschlagen"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "Aktiviere TLS"
 msgstr "Aktiviere TLS"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #, fuzzy
 #, fuzzy
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
@@ -1667,7 +1718,7 @@ msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
@@ -1736,7 +1787,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "Zertifikat ist gültig"
 msgstr "Zertifikat ist gültig"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
@@ -1872,15 +1923,15 @@ msgstr "Hole das Zertifikat, bitte warten..."
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1982,6 +2033,10 @@ msgstr "Import"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Zertifikatsstatus"
 msgstr "Zertifikatsstatus"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -2142,17 +2197,13 @@ msgstr "Aussteller: %{issuer}"
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Jwt-Secret"
 msgstr "Jwt-Secret"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "with a password manager."
 "with a password manager."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2248,6 +2299,24 @@ msgstr "Aus Einstellungen laden"
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Speichern erfolgreich"
 msgstr "Speichern erfolgreich"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "Erstellt"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+#, fuzzy
+msgid "Loader Settings"
+msgstr "Aus Einstellungen laden"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2356,7 +2425,22 @@ msgstr "Verwalte Benutzer"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "Zertifikat ist gültig"
 msgstr "Zertifikat ist gültig"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "Verwalte Seiten"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "Verwalte Seiten"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "Verwalte Seiten"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2391,11 +2475,15 @@ msgstr "Aktuelle Version"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "Aktuelle Version"
 msgstr "Aktuelle Version"
@@ -2405,6 +2493,10 @@ msgstr "Aktuelle Version"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2422,10 +2514,18 @@ msgstr "Arbeitsspeicher und Speicher"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr "Minuten"
 msgstr "Minuten"
@@ -2696,8 +2796,8 @@ msgid ""
 msgstr "Name der Konfiguration"
 msgstr "Name der Konfiguration"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2804,10 +2904,18 @@ msgstr "Zertifikat ist gültig"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "File Not Found"
 msgstr "File Not Found"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2836,12 +2944,13 @@ msgstr ""
 "OCSP Must Staple kann bei einigen Benutzern beim ersten Zugriff mit Firefox "
 "OCSP Must Staple kann bei einigen Benutzern beim ersten Zugriff mit Firefox "
 "Fehler verursachen."
 "Fehler verursachen."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 #, fuzzy
 #, fuzzy
 msgid "Off"
 msgid "Off"
 msgstr "Offline"
 msgstr "Offline"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2872,7 +2981,8 @@ msgstr "OK"
 msgid "OK"
 msgid "OK"
 msgstr "OK"
 msgstr "OK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2881,7 +2991,7 @@ msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 msgstr ""
 "Sobaöd die Überprüfung abgeschlossen ist, werden die Einträge entfernt."
 "Sobaöd die Überprüfung abgeschlossen ist, werden die Einträge entfernt."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2897,14 +3007,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr "Oder"
 msgstr "Oder"
@@ -2962,6 +3064,11 @@ msgstr "Verwalte Seiten"
 msgid "Params"
 msgid "Params"
 msgstr "Parameter"
 msgstr "Parameter"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr "Passkey"
 msgstr "Passkey"
@@ -3016,11 +3123,16 @@ msgstr "Ausführen"
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "Führe Core-Upgrade-Fehler aus"
 msgstr "Führe Core-Upgrade-Fehler aus"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+#, fuzzy
+msgid "Performance"
+msgstr "Ausführen"
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "Erfolgreich deaktiviert"
 msgstr "Erfolgreich deaktiviert"
@@ -3331,7 +3443,7 @@ msgstr "Änderungsprotokoll"
 msgid "Reload"
 msgid "Reload"
 msgstr "Neu laden"
 msgstr "Neu laden"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3360,7 +3472,7 @@ msgstr "Zertifikat ist gültig"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "Zertifikat ist gültig"
 msgstr "Zertifikat ist gültig"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3534,7 +3646,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr "Neustart"
 msgstr "Neustart"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
 #, fuzzy
@@ -3561,7 +3673,7 @@ msgstr "Zertifikat ist gültig"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "Zertifikat ist gültig"
 msgstr "Zertifikat ist gültig"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3728,10 +3840,6 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr "Schlüssel wurde kopiert"
 msgstr "Schlüssel wurde kopiert"
@@ -3772,11 +3880,11 @@ msgstr "Serverinformationen"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Serverinformationen"
 msgstr "Serverinformationen"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3830,6 +3938,10 @@ msgid ""
 "com/guide/config-nginx.html for more information"
 "com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr "Zeige"
 msgstr "Zeige"
@@ -3889,6 +4001,14 @@ msgstr ""
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "Installieren"
 msgstr "Installieren"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
@@ -4085,7 +4205,7 @@ msgstr "Zertifikat ist gültig"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "Zertifikat ist gültig"
 msgstr "Zertifikat ist gültig"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgid "Sync Nodes"
 msgstr "Synchrone Knoten"
 msgstr "Synchrone Knoten"
@@ -4550,6 +4670,10 @@ msgstr "Benutze OTP"
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr "Benuzte Wiederherstellungscode"
 msgstr "Benuzte Wiederherstellungscode"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 #, fuzzy
 #, fuzzy
 msgid "User"
 msgid "User"
@@ -4705,14 +4829,18 @@ msgid ""
 "codes."
 "codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "Aktuelle Version"
 msgstr "Aktuelle Version"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4734,8 +4862,8 @@ msgstr "Scrheibe Zertifikat-Privatschlüssel auf die Festplatte"
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "Schreibe Zertifikat auf die Festplatte"
 msgstr "Schreibe Zertifikat auf die Festplatte"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 183 - 58
app/src/language/en/app.po

@@ -119,7 +119,7 @@ msgstr "Advance Mode"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr ""
 msgstr ""
@@ -224,7 +224,7 @@ msgstr "Are you sure you want to remove this directive?"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
@@ -243,7 +243,7 @@ msgstr "Are you sure you want to remove this directive?"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
@@ -281,8 +281,8 @@ msgstr ""
 msgid "Author"
 msgid "Author"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr ""
 msgstr ""
 
 
@@ -378,6 +378,10 @@ msgstr "Basic Mode"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "Basic Mode"
 msgstr "Basic Mode"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+msgid "Basic Settings"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #, fuzzy
 #, fuzzy
 msgid "Batch Actions"
 msgid "Batch Actions"
@@ -409,16 +413,45 @@ msgstr "Build with"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "Certificate is valid"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
@@ -641,23 +674,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -694,7 +727,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -746,7 +779,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -905,6 +938,10 @@ msgstr ""
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "Enable failed"
 msgstr "Enable failed"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -1027,6 +1064,15 @@ msgstr ""
 msgid "Directives"
 msgid "Directives"
 msgstr "Directives"
 msgstr "Directives"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "Directives"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #, fuzzy
 #, fuzzy
 msgid "disable"
 msgid "disable"
@@ -1277,7 +1323,7 @@ msgstr "Enabled successfully"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Enable auto-renewal failed for %{name}"
 msgstr "Enable auto-renewal failed for %{name}"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1290,6 +1336,10 @@ msgstr "Enable failed"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "Enable TLS"
 msgstr "Enable TLS"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #, fuzzy
 #, fuzzy
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
@@ -1654,7 +1704,7 @@ msgstr "Certificate is valid"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
@@ -1727,7 +1777,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
@@ -1859,15 +1909,15 @@ msgstr "Getting the certificate, please wait..."
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1960,6 +2010,10 @@ msgstr ""
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -2124,17 +2178,13 @@ msgstr ""
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "with a password manager."
 "with a password manager."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2230,6 +2280,23 @@ msgstr ""
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "Created at"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+msgid "Loader Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2330,7 +2397,22 @@ msgstr "Manage Users"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "Manage Sites"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "Manage Sites"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "Manage Sites"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2365,11 +2447,15 @@ msgstr "Content"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "Content"
 msgstr "Content"
@@ -2379,6 +2465,10 @@ msgstr "Content"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2396,10 +2486,18 @@ msgstr "Memory and Storage"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr ""
 msgstr ""
@@ -2667,8 +2765,8 @@ msgid ""
 msgstr "Configuration Name"
 msgstr "Configuration Name"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2773,10 +2871,18 @@ msgstr "Certificate is valid"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "File Not Found"
 msgstr "File Not Found"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2804,11 +2910,12 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 msgid "Off"
 msgid "Off"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2839,7 +2946,8 @@ msgstr ""
 msgid "OK"
 msgid "OK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2847,7 +2955,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2863,14 +2971,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
@@ -2927,6 +3027,11 @@ msgstr "Manage Sites"
 msgid "Params"
 msgid "Params"
 msgstr "Params"
 msgstr "Params"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr ""
 msgstr ""
@@ -2979,11 +3084,15 @@ msgstr ""
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "Certificate has expired"
 msgstr "Certificate has expired"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+msgid "Performance"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "Disabled successfully"
 msgstr "Disabled successfully"
@@ -3278,7 +3387,7 @@ msgstr ""
 msgid "Reload"
 msgid "Reload"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3306,7 +3415,7 @@ msgstr "Certificate is valid"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3480,7 +3589,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
 msgid "Restart Nginx"
@@ -3506,7 +3615,7 @@ msgstr "Certificate is valid"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3672,10 +3781,6 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
@@ -3717,11 +3822,11 @@ msgstr "Server Info"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Server Info"
 msgstr "Server Info"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3773,6 +3878,10 @@ msgid ""
 "com/guide/config-nginx.html for more information"
 "com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr ""
 msgstr ""
@@ -3834,6 +3943,14 @@ msgstr "Directive"
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "Install"
 msgstr "Install"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
@@ -4032,7 +4149,7 @@ msgstr "Certificate is valid"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgid "Sync Nodes"
 msgstr ""
 msgstr ""
@@ -4473,6 +4590,10 @@ msgstr ""
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 #, fuzzy
 #, fuzzy
 msgid "User"
 msgid "User"
@@ -4616,14 +4737,18 @@ msgid ""
 "codes."
 "codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "Content"
 msgstr "Content"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4646,8 +4771,8 @@ msgstr ""
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 186 - 58
app/src/language/es/app.po

@@ -122,7 +122,7 @@ msgstr ""
 "Luego, actualice esta página y haga clic nuevamente en Agregar llave de "
 "Luego, actualice esta página y haga clic nuevamente en Agregar llave de "
 "acceso."
 "acceso."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr "Todo"
 msgstr "Todo"
@@ -219,7 +219,7 @@ msgstr "¿Está seguro de que quiere borrar?"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "¿Está seguro de que quiere recuperar este elemento?"
 msgstr "¿Está seguro de que quiere recuperar este elemento?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "¿Está seguro de que quiere borrar?"
 msgstr "¿Está seguro de que quiere borrar?"
@@ -236,7 +236,7 @@ msgstr "¿Está seguro de que desea eliminar este elemento?"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "¿Está seguro de que quiere borrar esta ubicación?"
 msgstr "¿Está seguro de que quiere borrar esta ubicación?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "¿Está seguro de que desea borrar todas las notificaciones?"
 msgstr "¿Está seguro de que desea borrar todas las notificaciones?"
@@ -275,8 +275,8 @@ msgstr "Configuración de autenticación"
 msgid "Author"
 msgid "Author"
 msgstr "Autor"
 msgstr "Autor"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr "Automático"
 msgstr "Automático"
 
 
@@ -370,6 +370,11 @@ msgstr "Básico"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "Modo Básico"
 msgstr "Modo Básico"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+#, fuzzy
+msgid "Basic Settings"
+msgstr "Configuración de 2FA"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #, fuzzy
 #, fuzzy
 msgid "Batch Actions"
 msgid "Batch Actions"
@@ -402,16 +407,45 @@ msgstr "Desarrollado con"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr "Dir CA"
 msgstr "Dir CA"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "Ruta cambiada"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr "Directorio CA"
 msgstr "Directorio CA"
@@ -628,23 +662,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -680,7 +714,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -731,7 +765,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr "Conexión perdida, por favor actualice la página."
 msgstr "Conexión perdida, por favor actualice la página."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -890,6 +924,10 @@ msgstr "Días"
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "Descripción"
 msgstr "Descripción"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -1009,6 +1047,15 @@ msgstr ""
 msgid "Directives"
 msgid "Directives"
 msgstr "Directivas"
 msgstr "Directivas"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "Directivas"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #, fuzzy
 #, fuzzy
 msgid "disable"
 msgid "disable"
@@ -1249,7 +1296,7 @@ msgstr "Habilitar 2FA exitoso"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "No se pudo activar la renovación automática por %{name}"
 msgstr "No se pudo activar la renovación automática por %{name}"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1262,6 +1309,10 @@ msgstr "Falló la habilitación"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "Habilitar TLS"
 msgstr "Habilitar TLS"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #, fuzzy
 #, fuzzy
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
@@ -1622,7 +1673,7 @@ msgstr "No se pudo obtener la información del certificado"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "No se pudo obtener la información del certificado"
 msgstr "No se pudo obtener la información del certificado"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "No se pudo obtener la información del certificado"
 msgstr "No se pudo obtener la información del certificado"
@@ -1691,7 +1742,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "Falla al obtener el certificado"
 msgstr "Falla al obtener el certificado"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "No se pudo obtener la información del certificado"
 msgstr "No se pudo obtener la información del certificado"
@@ -1823,15 +1874,15 @@ msgstr "Obteniendo el certificado, por favor espere..."
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Proxy Github"
 msgstr "Proxy Github"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1934,6 +1985,10 @@ msgstr "Importar"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Importar Certificado"
 msgstr "Importar Certificado"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -2088,17 +2143,13 @@ msgstr "Emisor: %{issuer}"
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Secreto Jwt"
 msgstr "Secreto Jwt"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "with a password manager."
 "with a password manager."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2189,6 +2240,24 @@ msgstr "Cargar desde configuraciones"
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Cargado con éxito"
 msgstr "Cargado con éxito"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "Crear Archivo"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+#, fuzzy
+msgid "Loader Settings"
+msgstr "Cargar desde configuraciones"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2292,7 +2361,22 @@ msgstr "Administrar usuarios"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "Certificado Administrado"
 msgstr "Certificado Administrado"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "Administrar sitios"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "Administrar sitios"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "Administrar Transmisiones"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2327,11 +2411,15 @@ msgstr "Versión actual"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "Versión actual"
 msgstr "Versión actual"
@@ -2341,6 +2429,10 @@ msgstr "Versión actual"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2358,10 +2450,18 @@ msgstr "Memoria y almacenamiento"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr "Minutos"
 msgstr "Minutos"
@@ -2624,8 +2724,8 @@ msgid ""
 msgstr "Error de análisis de configuración de Nginx"
 msgstr "Error de análisis de configuración de Nginx"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2730,10 +2830,18 @@ msgstr "Notificaciones"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "Archivo no Encontrado"
 msgstr "Archivo no Encontrado"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2761,12 +2869,13 @@ msgstr ""
 "OCSP Must Staple puede causar errores para algunos usuarios en el primer "
 "OCSP Must Staple puede causar errores para algunos usuarios en el primer "
 "acceso usando Firefox."
 "acceso usando Firefox."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 #, fuzzy
 #, fuzzy
 msgid "Off"
 msgid "Off"
 msgstr "Desconectado"
 msgstr "Desconectado"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2797,7 +2906,8 @@ msgstr "Ok"
 msgid "OK"
 msgid "OK"
 msgstr "OK"
 msgstr "OK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2805,7 +2915,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "Una vez que se complete la verificación, los registros se eliminarán."
 msgstr "Una vez que se complete la verificación, los registros se eliminarán."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2821,14 +2931,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr "O"
 msgstr "O"
@@ -2885,6 +2987,11 @@ msgstr "Administrar sitios"
 msgid "Params"
 msgid "Params"
 msgstr "Parámetros"
 msgstr "Parámetros"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr "Llave de acceso"
 msgstr "Llave de acceso"
@@ -2940,11 +3047,16 @@ msgstr "Realizar"
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "Error al ejecutar la actualización del kernel"
 msgstr "Error al ejecutar la actualización del kernel"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+#, fuzzy
+msgid "Performance"
+msgstr "Realizar"
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "Desactivado con éxito"
 msgstr "Desactivado con éxito"
@@ -3252,7 +3364,7 @@ msgstr "Nota de versión"
 msgid "Reload"
 msgid "Reload"
 msgstr "Recargar"
 msgstr "Recargar"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3281,7 +3393,7 @@ msgstr "Error al renombrar la configuración remota"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "Renombrar Configuración Remota Exitosa"
 msgstr "Renombrar Configuración Remota Exitosa"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3444,7 +3556,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr "Reiniciar"
 msgstr "Reiniciar"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
 #, fuzzy
@@ -3471,7 +3583,7 @@ msgstr "Error al renombrar la configuración remota"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "Renombrar Configuración Remota Exitosa"
 msgstr "Renombrar Configuración Remota Exitosa"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3637,10 +3749,6 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr "El secreto ha sido copiado"
 msgstr "El secreto ha sido copiado"
@@ -3681,11 +3789,11 @@ msgstr "Información del servidor"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Información del servidor"
 msgstr "Información del servidor"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3739,6 +3847,10 @@ msgid ""
 "com/guide/config-nginx.html for more information"
 "com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr "Mostrar"
 msgstr "Mostrar"
@@ -3797,6 +3909,14 @@ msgstr ""
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "Instalar"
 msgstr "Instalar"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "Contenido de certificado SSL"
 msgstr "Contenido de certificado SSL"
@@ -3982,7 +4102,7 @@ msgstr "Error de Configuración de Sincronización"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "Configuración de sincronización exitosa"
 msgstr "Configuración de sincronización exitosa"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 #, fuzzy
 #, fuzzy
 msgid "Sync Nodes"
 msgid "Sync Nodes"
@@ -4453,6 +4573,10 @@ msgstr "Usar OTP"
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr "Usar código de recuperación"
 msgstr "Usar código de recuperación"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 msgid "User"
 msgid "User"
 msgstr "Usuario"
 msgstr "Usuario"
@@ -4606,14 +4730,18 @@ msgid ""
 "codes."
 "codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "Versión actual"
 msgstr "Versión actual"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4635,8 +4763,8 @@ msgstr "Escribir la clave privada del certificado a disco"
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "Escribir certificado a disco"
 msgstr "Escribir certificado a disco"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 185 - 58
app/src/language/fr_FR/app.po

@@ -124,7 +124,7 @@ msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 msgstr ""
 "Après, rechargez la page et cliquez de nouveau sur ajouter une clé d'accès."
 "Après, rechargez la page et cliquez de nouveau sur ajouter une clé d'accès."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr "Tous"
 msgstr "Tous"
@@ -230,7 +230,7 @@ msgstr "Etes-vous sûr que vous voulez supprimer ?"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Voulez-vous vraiment supprimer cette directive ?"
 msgstr "Voulez-vous vraiment supprimer cette directive ?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Etes-vous sûr que vous voulez supprimer ?"
 msgstr "Etes-vous sûr que vous voulez supprimer ?"
@@ -248,7 +248,7 @@ msgstr "Voulez-vous vraiment supprimer cette directive ?"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Voulez-vous vraiment supprimer cette localisation ?"
 msgstr "Voulez-vous vraiment supprimer cette localisation ?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Voulez-vous vraiment effacer l'historique du chat ?"
 msgstr "Voulez-vous vraiment effacer l'historique du chat ?"
@@ -288,8 +288,8 @@ msgstr "Options d'authentification"
 msgid "Author"
 msgid "Author"
 msgstr "Autheur"
 msgstr "Autheur"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr "Auto"
 msgstr "Auto"
 
 
@@ -383,6 +383,11 @@ msgstr "Basique"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "Mode simple"
 msgstr "Mode simple"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+#, fuzzy
+msgid "Basic Settings"
+msgstr "Options 2FA"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #, fuzzy
 #, fuzzy
 msgid "Batch Actions"
 msgid "Batch Actions"
@@ -416,16 +421,45 @@ msgstr "Build avec"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "Changer de certificat"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
@@ -654,23 +688,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr "Clique pour copier"
 msgstr "Clique pour copier"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -707,7 +741,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -758,7 +792,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr "Connexion perdue, merci de recharger la page."
 msgstr "Connexion perdue, merci de recharger la page."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -920,6 +954,10 @@ msgstr "Jours"
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "Description"
 msgstr "Description"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -1044,6 +1082,15 @@ msgstr "DirectiveIdx hors limite"
 msgid "Directives"
 msgid "Directives"
 msgstr "Directives"
 msgstr "Directives"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "Directives"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #, fuzzy
 #, fuzzy
 msgid "disable"
 msgid "disable"
@@ -1298,7 +1345,7 @@ msgstr "Activé avec succès"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Échec de l'activation du renouvellement automatique pour %{name}"
 msgstr "Échec de l'activation du renouvellement automatique pour %{name}"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1311,6 +1358,10 @@ msgstr "Échec de l'activation"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "Activer TLS"
 msgstr "Activer TLS"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #, fuzzy
 #, fuzzy
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
@@ -1676,7 +1727,7 @@ msgstr "Échec de l'obtention des informations sur le certificat"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Échec de l'obtention des informations sur le certificat"
 msgstr "Échec de l'obtention des informations sur le certificat"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "Échec de l'obtention des informations sur le certificat"
 msgstr "Échec de l'obtention des informations sur le certificat"
@@ -1751,7 +1802,7 @@ msgstr "Erreur lecture nginx.conf"
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "Obtenir un certificat"
 msgstr "Obtenir un certificat"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "Échec de l'obtention des informations sur le certificat"
 msgstr "Échec de l'obtention des informations sur le certificat"
@@ -1885,15 +1936,15 @@ msgstr "Obtention du certificat, veuillez patienter..."
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Proxy Github"
 msgstr "Proxy Github"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -2001,6 +2052,10 @@ msgstr "Exporter"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "État du certificat"
 msgstr "État du certificat"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -2158,10 +2213,6 @@ msgstr "Auteur : %{issuer}"
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Secret Jwt"
 msgstr "Secret Jwt"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
@@ -2170,7 +2221,7 @@ msgstr ""
 "Garder vos codes de récupération sécurisés autant que votre mot de passe. "
 "Garder vos codes de récupération sécurisés autant que votre mot de passe. "
 "Nous recommandons de les enregistrer avec un gestionnaire de mots de passe."
 "Nous recommandons de les enregistrer avec un gestionnaire de mots de passe."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2267,6 +2318,24 @@ msgstr "Charger à partir des options"
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Enregistré avec succès"
 msgstr "Enregistré avec succès"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "Créé le"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+#, fuzzy
+msgid "Loader Settings"
+msgstr "Charger à partir des options"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2370,7 +2439,22 @@ msgstr "Gérer les utilisateurs"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "Changer de certificat"
 msgstr "Changer de certificat"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "Gérer les sites"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "Gérer les sites"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "Gérer les sites"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2405,11 +2489,15 @@ msgstr "Version actuelle"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "Version actuelle"
 msgstr "Version actuelle"
@@ -2419,6 +2507,10 @@ msgstr "Version actuelle"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2436,10 +2528,18 @@ msgstr "Mémoire et stockage"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr ""
 msgstr ""
@@ -2708,8 +2808,8 @@ msgid ""
 msgstr "Erreur d'analyse de configuration Nginx"
 msgstr "Erreur d'analyse de configuration Nginx"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2814,10 +2914,18 @@ msgstr "Certification"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "Fichier introuvable"
 msgstr "Fichier introuvable"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2843,11 +2951,12 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 msgid "Off"
 msgid "Off"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2878,7 +2987,8 @@ msgstr ""
 msgid "OK"
 msgid "OK"
 msgstr "OK"
 msgstr "OK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2886,7 +2996,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2902,14 +3012,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
@@ -2965,6 +3067,11 @@ msgstr "Gérer les sites"
 msgid "Params"
 msgid "Params"
 msgstr "Paramètres"
 msgstr "Paramètres"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr ""
 msgstr ""
@@ -3016,11 +3123,15 @@ msgstr ""
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "Erreur lors de la mise a niveau du core"
 msgstr "Erreur lors de la mise a niveau du core"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+msgid "Performance"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "Désactivé avec succès"
 msgstr "Désactivé avec succès"
@@ -3325,7 +3436,7 @@ msgstr "Note de version"
 msgid "Reload"
 msgid "Reload"
 msgstr "Recharger"
 msgstr "Recharger"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3354,7 +3465,7 @@ msgstr "Changer de certificat"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "Changer de certificat"
 msgstr "Changer de certificat"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3529,7 +3640,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr "Redémarrer"
 msgstr "Redémarrer"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
 #, fuzzy
@@ -3556,7 +3667,7 @@ msgstr "Changer de certificat"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "Changer de certificat"
 msgstr "Changer de certificat"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3720,10 +3831,6 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
@@ -3764,11 +3871,11 @@ msgstr "Informations sur le serveur"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Informations sur le serveur"
 msgstr "Informations sur le serveur"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3822,6 +3929,10 @@ msgid ""
 "com/guide/config-nginx.html for more information"
 "com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr ""
 msgstr ""
@@ -3882,6 +3993,14 @@ msgstr "Directive"
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "Installer"
 msgstr "Installer"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
@@ -4079,7 +4198,7 @@ msgstr "Changer de certificat"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "Changer de certificat"
 msgstr "Changer de certificat"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgid "Sync Nodes"
 msgstr ""
 msgstr ""
@@ -4527,6 +4646,10 @@ msgstr ""
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 #, fuzzy
 #, fuzzy
 msgid "User"
 msgid "User"
@@ -4670,14 +4793,18 @@ msgid ""
 "codes."
 "codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "Version actuelle"
 msgstr "Version actuelle"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4699,8 +4826,8 @@ msgstr "Écriture de la clé privée du certificat sur le disque"
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "Écriture du certificat sur le disque"
 msgstr "Écriture du certificat sur le disque"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 185 - 58
app/src/language/ko_KR/app.po

@@ -118,7 +118,7 @@ msgstr "고급 모드"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr ""
 msgstr ""
@@ -212,7 +212,7 @@ msgstr "정말 삭제하시겠습니까?"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "정말로 이 항목을 복구하시겠습니까?"
 msgstr "정말로 이 항목을 복구하시겠습니까?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "다음 동기화 노드에서 Nginx를 다시 로드하시겠습니까?"
 msgstr "다음 동기화 노드에서 Nginx를 다시 로드하시겠습니까?"
 
 
@@ -228,7 +228,7 @@ msgstr "이 항목을 제거하시겠습니까?"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "이 위치를 제거하시겠습니까?"
 msgstr "이 위치를 제거하시겠습니까?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "다음 동기화 노드에서 Nginx를 다시 시작하시겠습니까?"
 msgstr "다음 동기화 노드에서 Nginx를 다시 시작하시겠습니까?"
 
 
@@ -265,8 +265,8 @@ msgstr "인증 설정"
 msgid "Author"
 msgid "Author"
 msgstr "저자"
 msgstr "저자"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr ""
 msgstr ""
 
 
@@ -360,6 +360,11 @@ msgstr "기본"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "기본 모드"
 msgstr "기본 모드"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+#, fuzzy
+msgid "Basic Settings"
+msgstr "2FA 설정"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #, fuzzy
 #, fuzzy
 msgid "Batch Actions"
 msgid "Batch Actions"
@@ -390,16 +395,45 @@ msgstr "빌드 환경"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr "CA 디렉토리"
 msgstr "CA 디렉토리"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "인증서 변경"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr "CA 디렉토리"
 msgstr "CA 디렉토리"
@@ -618,23 +652,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -670,7 +704,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -721,7 +755,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr "연결이 끊어졌습니다. 페이지를 새로 고침하세요."
 msgstr "연결이 끊어졌습니다. 페이지를 새로 고침하세요."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -879,6 +913,10 @@ msgstr ""
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "설명"
 msgstr "설명"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -1000,6 +1038,15 @@ msgstr ""
 msgid "Directives"
 msgid "Directives"
 msgstr "지시문들"
 msgstr "지시문들"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "지시문들"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #, fuzzy
 #, fuzzy
 msgid "disable"
 msgid "disable"
@@ -1240,7 +1287,7 @@ msgstr "성공적으로 활성화"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "%{name}에 대한 자동 갱신 활성화 실패"
 msgstr "%{name}에 대한 자동 갱신 활성화 실패"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1253,6 +1300,10 @@ msgstr "활성화 실패"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "TLS 활성화"
 msgstr "TLS 활성화"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #, fuzzy
 #, fuzzy
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
@@ -1616,7 +1667,7 @@ msgstr "인증서 정보 가져오기 실패"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "인증서 정보 가져오기 실패"
 msgstr "인증서 정보 가져오기 실패"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "인증서 정보 가져오기 실패"
 msgstr "인증서 정보 가져오기 실패"
@@ -1685,7 +1736,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "인증서 획득 실패"
 msgstr "인증서 획득 실패"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "인증서 정보 가져오기 실패"
 msgstr "인증서 정보 가져오기 실패"
@@ -1816,15 +1867,15 @@ msgstr "인증서를 가져오는 중입니다. 잠시 기다려 주세요..."
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Github 프록시"
 msgstr "Github 프록시"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1919,6 +1970,10 @@ msgstr "가져오기"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "인증서 상태"
 msgstr "인증서 상태"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -2077,17 +2132,13 @@ msgstr ""
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Jwt 토큰"
 msgstr "Jwt 토큰"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "with a password manager."
 "with a password manager."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2183,6 +2234,24 @@ msgstr ""
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "성공적으로 저장됨"
 msgstr "성공적으로 저장됨"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "생성"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+#, fuzzy
+msgid "Loader Settings"
+msgstr "2FA 설정"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2288,7 +2357,22 @@ msgstr "사용자 관리"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "인증서 유효"
 msgstr "인증서 유효"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "사이트 관리"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "사이트 관리"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "스트림 관리"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2323,11 +2407,15 @@ msgstr "현재 버전"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "현재 버전"
 msgstr "현재 버전"
@@ -2337,6 +2425,10 @@ msgstr "현재 버전"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2354,10 +2446,18 @@ msgstr "메모리 및 저장소"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr "분"
 msgstr "분"
@@ -2628,8 +2728,8 @@ msgid ""
 msgstr "Nginx 구성 오류름"
 msgstr "Nginx 구성 오류름"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2733,10 +2833,18 @@ msgstr "알림"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "파일을 찾을 수 없음"
 msgstr "파일을 찾을 수 없음"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2763,12 +2871,13 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 #, fuzzy
 #, fuzzy
 msgid "Off"
 msgid "Off"
 msgstr "오프라인"
 msgstr "오프라인"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2799,7 +2908,8 @@ msgstr ""
 msgid "OK"
 msgid "OK"
 msgstr "확인"
 msgstr "확인"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2807,7 +2917,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "검증이 완료되면, 레코드는 제거됩니다."
 msgstr "검증이 완료되면, 레코드는 제거됩니다."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2823,14 +2933,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "오픈AI"
 msgstr "오픈AI"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
@@ -2887,6 +2989,11 @@ msgstr "사이트 관리"
 msgid "Params"
 msgid "Params"
 msgstr "파라미터"
 msgstr "파라미터"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr ""
 msgstr ""
@@ -2938,11 +3045,15 @@ msgstr ""
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "핵심 업그레이드 오류 수행"
 msgstr "핵심 업그레이드 오류 수행"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+msgid "Performance"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "성공적으로 비활성화됨"
 msgstr "성공적으로 비활성화됨"
@@ -3245,7 +3356,7 @@ msgstr "릴리스 노트"
 msgid "Reload"
 msgid "Reload"
 msgstr "리로드"
 msgstr "리로드"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3274,7 +3385,7 @@ msgstr "인증서 갱신 오류"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "인증서 갱신 성공"
 msgstr "인증서 갱신 성공"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3449,7 +3560,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr "재시작"
 msgstr "재시작"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
 #, fuzzy
@@ -3476,7 +3587,7 @@ msgstr "인증서 갱신 오류"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "인증서 갱신 성공"
 msgstr "인증서 갱신 성공"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3642,10 +3753,6 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
@@ -3685,11 +3792,11 @@ msgstr "서버 정보"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "서버 정보"
 msgstr "서버 정보"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3741,6 +3848,10 @@ msgid ""
 "com/guide/config-nginx.html for more information"
 "com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr ""
 msgstr ""
@@ -3800,6 +3911,14 @@ msgstr ""
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "설치"
 msgstr "설치"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
@@ -3996,7 +4115,7 @@ msgstr "인증서 갱신 오류"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "인증서 갱신 성공"
 msgstr "인증서 갱신 성공"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgid "Sync Nodes"
 msgstr ""
 msgstr ""
@@ -4441,6 +4560,10 @@ msgstr ""
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 #, fuzzy
 #, fuzzy
 msgid "User"
 msgid "User"
@@ -4587,14 +4710,18 @@ msgid ""
 "codes."
 "codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "현재 버전"
 msgstr "현재 버전"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4616,8 +4743,8 @@ msgstr "인증서 개인 키를 디스크에 쓰기"
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "인증서를 디스크에 쓰기"
 msgstr "인증서를 디스크에 쓰기"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 177 - 58
app/src/language/messages.pot

@@ -110,7 +110,7 @@ msgstr ""
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr ""
 msgstr ""
@@ -202,7 +202,7 @@ msgstr ""
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr ""
 msgstr ""
 
 
@@ -218,7 +218,7 @@ msgstr ""
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr ""
 msgstr ""
 
 
@@ -255,8 +255,8 @@ msgstr ""
 msgid "Author"
 msgid "Author"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr ""
 msgstr ""
 
 
@@ -349,6 +349,10 @@ msgstr ""
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+msgid "Basic Settings"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 msgid "Batch Actions"
 msgid "Batch Actions"
 msgstr ""
 msgstr ""
@@ -378,16 +382,44 @@ msgstr ""
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+msgid "Cache Path"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
@@ -585,23 +617,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -636,7 +668,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -684,7 +716,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -834,6 +866,10 @@ msgstr ""
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -949,6 +985,14 @@ msgstr ""
 msgid "Directives"
 msgid "Directives"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+msgid "Directory Levels"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 msgid "disable"
 msgid "disable"
 msgstr ""
 msgstr ""
@@ -1172,7 +1216,7 @@ msgstr ""
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1184,6 +1228,10 @@ msgstr ""
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25
 #: src/components/Notification/notifications.ts:25
 #: src/language/constants.ts:54
 #: src/language/constants.ts:54
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
@@ -1508,7 +1556,7 @@ msgstr ""
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr ""
 msgstr ""
 
 
@@ -1568,7 +1616,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr ""
 msgstr ""
 
 
@@ -1689,15 +1737,15 @@ msgstr ""
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1780,6 +1828,10 @@ msgstr ""
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid "Includes master process, worker processes, cache processes, and other Nginx processes"
 msgid "Includes master process, worker processes, cache processes, and other Nginx processes"
 msgstr ""
 msgstr ""
@@ -1928,15 +1980,11 @@ msgstr ""
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid "Keep your recovery codes as safe as your password. We recommend saving them with a password manager."
 msgid "Keep your recovery codes as safe as your password. We recommend saving them with a password manager."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2023,6 +2071,22 @@ msgstr ""
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+msgid "Loader Files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+msgid "Loader Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2114,7 +2178,19 @@ msgstr ""
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+msgid "Manager Files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+msgid "Manager Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+msgid "Manager Threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2148,11 +2224,15 @@ msgstr ""
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr ""
 msgstr ""
 
 
@@ -2161,6 +2241,10 @@ msgstr ""
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2178,10 +2262,18 @@ msgstr ""
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr ""
 msgstr ""
@@ -2432,8 +2524,8 @@ msgid "Nginx UI configuration has been restored and will restart automatically i
 msgstr ""
 msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2526,10 +2618,18 @@ msgstr ""
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2553,11 +2653,12 @@ msgstr ""
 msgid "OCSP Must Staple may cause errors for some users on first access using Firefox."
 msgid "OCSP Must Staple may cause errors for some users on first access using Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 msgid "Off"
 msgid "Off"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2588,7 +2689,8 @@ msgstr ""
 msgid "OK"
 msgid "OK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2596,7 +2698,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2612,14 +2714,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100
 #: src/components/TwoFA/Authorization.vue:100
 #: src/views/other/Login.vue:231
 #: src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
@@ -2675,6 +2769,11 @@ msgstr ""
 msgid "Params"
 msgid "Params"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr ""
 msgstr ""
@@ -2724,11 +2823,15 @@ msgstr ""
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+msgid "Performance"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr ""
 msgstr ""
 
 
@@ -2994,7 +3097,7 @@ msgstr ""
 msgid "Reload"
 msgid "Reload"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3018,7 +3121,7 @@ msgstr ""
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3169,7 +3272,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
 msgid "Restart Nginx"
@@ -3191,7 +3294,7 @@ msgstr ""
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3341,10 +3444,6 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
@@ -3385,11 +3484,11 @@ msgstr ""
 msgid "Server Info"
 msgid "Server Info"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3433,6 +3532,10 @@ msgstr ""
 msgid "Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information"
 msgid "Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr ""
 msgstr ""
@@ -3485,6 +3588,14 @@ msgstr ""
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr ""
 msgstr ""
@@ -3659,7 +3770,7 @@ msgstr ""
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgid "Sync Nodes"
 msgstr ""
 msgstr ""
@@ -4035,6 +4146,10 @@ msgstr ""
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 msgid "User"
 msgid "User"
 msgstr ""
 msgstr ""
@@ -4156,13 +4271,17 @@ msgstr ""
 msgid "When you generate new recovery codes, you must download or print the new codes."
 msgid "When you generate new recovery codes, you must download or print the new codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr ""
 msgstr ""
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4184,8 +4303,8 @@ msgstr ""
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 186 - 58
app/src/language/ru_RU/app.po

@@ -120,7 +120,7 @@ msgstr "Расширенный режим"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "Затем, обновите эту страницу и снова нажмите «Добавить ключ доступа»."
 msgstr "Затем, обновите эту страницу и снова нажмите «Добавить ключ доступа»."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr "Все"
 msgstr "Все"
@@ -214,7 +214,7 @@ msgstr "Вы уверены, что хотите удалить?"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Вы уверены, что хотите восстановить этот элемент?"
 msgstr "Вы уверены, что хотите восстановить этот элемент?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Вы уверены, что хотите удалить?"
 msgstr "Вы уверены, что хотите удалить?"
@@ -231,7 +231,7 @@ msgstr "Вы уверены, что хотите удалить этот эле
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Вы уверены, что хотите удалить location?"
 msgstr "Вы уверены, что хотите удалить location?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Вы уверены, что хотите очистить все уведомления?"
 msgstr "Вы уверены, что хотите очистить все уведомления?"
@@ -269,8 +269,8 @@ msgstr "Настройки аутентификации"
 msgid "Author"
 msgid "Author"
 msgstr "Автор"
 msgstr "Автор"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr ""
 msgstr ""
 
 
@@ -364,6 +364,11 @@ msgstr "Основные"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "Простой режим"
 msgstr "Простой режим"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+#, fuzzy
+msgid "Basic Settings"
+msgstr "Настройки 2FA"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #, fuzzy
 #, fuzzy
 msgid "Batch Actions"
 msgid "Batch Actions"
@@ -394,16 +399,45 @@ msgstr "Собрать с"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr "Директория корневого сертификата"
 msgstr "Директория корневого сертификата"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "Путь изменён"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
@@ -616,23 +650,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -668,7 +702,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -719,7 +753,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr "Соединение потеряно, пожалуйста, обновите страницу."
 msgstr "Соединение потеряно, пожалуйста, обновите страницу."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -875,6 +909,10 @@ msgstr "Дни"
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "Ошибка расшифровки"
 msgstr "Ошибка расшифровки"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -994,6 +1032,15 @@ msgstr ""
 msgid "Directives"
 msgid "Directives"
 msgstr "Директивы"
 msgstr "Директивы"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "Директивы"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #, fuzzy
 #, fuzzy
 msgid "disable"
 msgid "disable"
@@ -1236,7 +1283,7 @@ msgstr "Двухфакторная аутентификация успешно 
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Не удалось включить автоматическое продление для %{name}"
 msgstr "Не удалось включить автоматическое продление для %{name}"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1249,6 +1296,10 @@ msgstr "Не удалось включить"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "Включить TOTP"
 msgstr "Включить TOTP"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #, fuzzy
 #, fuzzy
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
@@ -1606,7 +1657,7 @@ msgstr "Не удалось получить информацию о серти
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Не удалось получить информацию о сертификате"
 msgstr "Не удалось получить информацию о сертификате"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "Не удалось получить информацию о сертификате"
 msgstr "Не удалось получить информацию о сертификате"
@@ -1675,7 +1726,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "Не удалось получить сертификат"
 msgstr "Не удалось получить сертификат"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "Не удалось получить информацию о сертификате"
 msgstr "Не удалось получить информацию о сертификате"
@@ -1806,15 +1857,15 @@ msgstr "Получение сертификата, пожалуйста, под
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Прокси Github"
 msgstr "Прокси Github"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1917,6 +1968,10 @@ msgstr "Импорт"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Импортировать сертификат"
 msgstr "Импортировать сертификат"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -2069,17 +2124,13 @@ msgstr "Издатель: %{issuer}"
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Jwt секрет"
 msgstr "Jwt секрет"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "with a password manager."
 "with a password manager."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2170,6 +2221,24 @@ msgstr "Загрузить из настроек"
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Загружено успешно"
 msgstr "Загружено успешно"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "Создать файл"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+#, fuzzy
+msgid "Loader Settings"
+msgstr "Загрузить из настроек"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2272,7 +2341,22 @@ msgstr "Пользователи"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "Управление сертификатом"
 msgstr "Управление сертификатом"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "Сайты"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "Сайты"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "Управление потоками"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2307,11 +2391,15 @@ msgstr "Текущяя версия"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "Текущяя версия"
 msgstr "Текущяя версия"
@@ -2321,6 +2409,10 @@ msgstr "Текущяя версия"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2338,10 +2430,18 @@ msgstr "Память и хранилище"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr "Минуты"
 msgstr "Минуты"
@@ -2603,8 +2703,8 @@ msgid ""
 msgstr "Ошибка разбора конфигурации Nginx"
 msgstr "Ошибка разбора конфигурации Nginx"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2707,10 +2807,18 @@ msgstr "Уведомления"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "Файл не найден"
 msgstr "Файл не найден"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2738,12 +2846,13 @@ msgstr ""
 "OCSP Must Staple может вызвать ошибки у некоторых пользователей при первом "
 "OCSP Must Staple может вызвать ошибки у некоторых пользователей при первом "
 "доступе через Firefox."
 "доступе через Firefox."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 #, fuzzy
 #, fuzzy
 msgid "Off"
 msgid "Off"
 msgstr "Оффлайн"
 msgstr "Оффлайн"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2774,7 +2883,8 @@ msgstr "Ок"
 msgid "OK"
 msgid "OK"
 msgstr "ОК"
 msgstr "ОК"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2782,7 +2892,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "После завершения проверки записи будут удалены."
 msgstr "После завершения проверки записи будут удалены."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2798,14 +2908,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
@@ -2861,6 +2963,11 @@ msgstr "Сайты"
 msgid "Params"
 msgid "Params"
 msgstr "Параметры"
 msgstr "Параметры"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr ""
 msgstr ""
@@ -2912,11 +3019,16 @@ msgstr "Выполнить"
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "Ошибка обновления ядра"
 msgstr "Ошибка обновления ядра"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+#, fuzzy
+msgid "Performance"
+msgstr "Выполнить"
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "Отключено успешно"
 msgstr "Отключено успешно"
@@ -3221,7 +3333,7 @@ msgstr "Что нового"
 msgid "Reload"
 msgid "Reload"
 msgstr "Перегрузить"
 msgstr "Перегрузить"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3250,7 +3362,7 @@ msgstr "Ошибка переименования удаленной конфи
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "Переименование удаленной конфигурации прошло успешно"
 msgstr "Переименование удаленной конфигурации прошло успешно"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3411,7 +3523,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr "Перезапуск"
 msgstr "Перезапуск"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
 #, fuzzy
@@ -3438,7 +3550,7 @@ msgstr "Ошибка переименования удаленной конфи
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "Переименование удаленной конфигурации прошло успешно"
 msgstr "Переименование удаленной конфигурации прошло успешно"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3602,10 +3714,6 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
@@ -3646,11 +3754,11 @@ msgstr "Информация о сервере"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Информация о сервере"
 msgstr "Информация о сервере"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3703,6 +3811,10 @@ msgid ""
 "com/guide/config-nginx.html for more information"
 "com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr "Показать"
 msgstr "Показать"
@@ -3761,6 +3873,14 @@ msgstr ""
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "Установить"
 msgstr "Установить"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "Содержимое SSL-сертификата"
 msgstr "Содержимое SSL-сертификата"
@@ -3946,7 +4066,7 @@ msgstr "Ошибка синхронизации конфигурации"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "Синхронизация конфигурации успешна"
 msgstr "Синхронизация конфигурации успешна"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 #, fuzzy
 #, fuzzy
 msgid "Sync Nodes"
 msgid "Sync Nodes"
@@ -4409,6 +4529,10 @@ msgstr "Использовать OTP"
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr "Использовать код восстановления"
 msgstr "Использовать код восстановления"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 msgid "User"
 msgid "User"
 msgstr "Пользователь"
 msgstr "Пользователь"
@@ -4552,14 +4676,18 @@ msgid ""
 "codes."
 "codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "Текущяя версия"
 msgstr "Текущяя версия"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4581,8 +4709,8 @@ msgstr "Запись закрытого ключа сертификата на 
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "Запись сертификата на диск"
 msgstr "Запись сертификата на диск"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 186 - 58
app/src/language/tr_TR/app.po

@@ -118,7 +118,7 @@ msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 msgstr ""
 "Daha sonra, bu sayfayı yenileyin ve tekrar geçiş anahtarı ekle'ye tıklayın."
 "Daha sonra, bu sayfayı yenileyin ve tekrar geçiş anahtarı ekle'ye tıklayın."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr "Hepsi"
 msgstr "Hepsi"
@@ -210,7 +210,7 @@ msgstr "Silmek istediğine emin misin?"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Bu öğeyi kurtarmak istediğinizden emin misiniz?"
 msgstr "Bu öğeyi kurtarmak istediğinizden emin misiniz?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Silmek istediğine emin misin?"
 msgstr "Silmek istediğine emin misin?"
@@ -227,7 +227,7 @@ msgstr "Bu öğeyi kaldırmak istediğinizden emin misiniz?"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Bu konumu kaldırmak istediğinizden emin misiniz?"
 msgstr "Bu konumu kaldırmak istediğinizden emin misiniz?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Tüm bildirimleri temizlemek istediğinizden emin misiniz?"
 msgstr "Tüm bildirimleri temizlemek istediğinizden emin misiniz?"
@@ -266,8 +266,8 @@ msgstr "Kimlik Doğrulama Ayarları"
 msgid "Author"
 msgid "Author"
 msgstr "Yazar"
 msgstr "Yazar"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr ""
 msgstr ""
 
 
@@ -361,6 +361,11 @@ msgstr "Temel"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "Temel Mod"
 msgstr "Temel Mod"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+#, fuzzy
+msgid "Basic Settings"
+msgstr "2FA Ayarları"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #, fuzzy
 #, fuzzy
 msgid "Batch Actions"
 msgid "Batch Actions"
@@ -391,16 +396,45 @@ msgstr "İle Oluşturuldu"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr "CA Dizini"
 msgstr "CA Dizini"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "Değişen Dosya Yolu"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr "CADizini"
 msgstr "CADizini"
@@ -617,23 +651,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -669,7 +703,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -720,7 +754,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr "Bağlantı kesildi, lütfen sayfayı yenileyin."
 msgstr "Bağlantı kesildi, lütfen sayfayı yenileyin."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -878,6 +912,10 @@ msgstr "Günler"
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "Açıklama"
 msgstr "Açıklama"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -1001,6 +1039,15 @@ msgstr ""
 msgid "Directives"
 msgid "Directives"
 msgstr "Yönergeler"
 msgstr "Yönergeler"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "Yönergeler"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #, fuzzy
 #, fuzzy
 msgid "disable"
 msgid "disable"
@@ -1255,7 +1302,7 @@ msgstr "2FA'yı başarıyla etkinleştirildi"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "%{name} için otomatik yenilemeyi etkinleştirme başarısız oldu"
 msgstr "%{name} için otomatik yenilemeyi etkinleştirme başarısız oldu"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1268,6 +1315,10 @@ msgstr "Etkinleştirme başarısız"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "TOTP'yi Etkinleştir"
 msgstr "TOTP'yi Etkinleştir"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #, fuzzy
 #, fuzzy
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
@@ -1639,7 +1690,7 @@ msgstr "Sertifika bilgileri alınamadı"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Sertifika bilgileri alınamadı"
 msgstr "Sertifika bilgileri alınamadı"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "Sertifika bilgileri alınamadı"
 msgstr "Sertifika bilgileri alınamadı"
@@ -1708,7 +1759,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "Sertifika alınamadı"
 msgstr "Sertifika alınamadı"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "Sertifika bilgileri alınamadı"
 msgstr "Sertifika bilgileri alınamadı"
@@ -1839,15 +1890,15 @@ msgstr "Sertifika alınıyor, lütfen bekleyin..."
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Github Proxy"
 msgstr "Github Proxy"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1951,6 +2002,10 @@ msgstr "İçe Aktar"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Sertifika İçe Aktar"
 msgstr "Sertifika İçe Aktar"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -2105,17 +2160,13 @@ msgstr "Düzenleyen: %{issuer}"
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Jwt Secret"
 msgstr "Jwt Secret"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "with a password manager."
 "with a password manager."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2205,6 +2256,24 @@ msgstr "Ayarlar'dan yükle"
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Başarıyla yüklendi"
 msgstr "Başarıyla yüklendi"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "Dosya Oluştur"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+#, fuzzy
+msgid "Loader Settings"
+msgstr "Ayarlar'dan yükle"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2313,7 +2382,22 @@ msgstr "Kullanıcıları Yönet"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "Yönetilen Sertifika"
 msgstr "Yönetilen Sertifika"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "Siteleri Yönet"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "Siteleri Yönet"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "Akışları Yönet"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2349,11 +2433,15 @@ msgstr "Mevcut sürüm"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "Mevcut sürüm"
 msgstr "Mevcut sürüm"
@@ -2363,6 +2451,10 @@ msgstr "Mevcut sürüm"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2382,10 +2474,18 @@ msgstr "Bellek ve Depolama"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 #, fuzzy
 #, fuzzy
 msgid "Minutes"
 msgid "Minutes"
@@ -2672,8 +2772,8 @@ msgid ""
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2783,10 +2883,18 @@ msgstr "Bildirimler"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "Dosya bulunamadı"
 msgstr "Dosya bulunamadı"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2818,12 +2926,13 @@ msgstr ""
 "OCSP Must Staple, Firefox kullanarak ilk erişimde bazı kullanıcılar için "
 "OCSP Must Staple, Firefox kullanarak ilk erişimde bazı kullanıcılar için "
 "hatalara neden olabilir."
 "hatalara neden olabilir."
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 #, fuzzy
 #, fuzzy
 msgid "Off"
 msgid "Off"
 msgstr "Çevrimdışı"
 msgstr "Çevrimdışı"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2857,7 +2966,8 @@ msgstr "Tamam"
 msgid "OK"
 msgid "OK"
 msgstr "Tamam"
 msgstr "Tamam"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2866,7 +2976,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "Doğrulama tamamlandıktan sonra kayıtlar kaldırılacaktır."
 msgstr "Doğrulama tamamlandıktan sonra kayıtlar kaldırılacaktır."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2884,14 +2994,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #, fuzzy
 #, fuzzy
 msgid "Or"
 msgid "Or"
@@ -2955,6 +3057,11 @@ msgstr "Siteleri Yönet"
 msgid "Params"
 msgid "Params"
 msgstr "Parametreler"
 msgstr "Parametreler"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Passkey"
 msgid "Passkey"
@@ -3016,11 +3123,16 @@ msgstr "Uygula"
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "Çekirdek yükseltme hatası gerçekleştirin"
 msgstr "Çekirdek yükseltme hatası gerçekleştirin"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+#, fuzzy
+msgid "Performance"
+msgstr "Uygula"
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "Başarıyla devre dışı bırakıldı"
 msgstr "Başarıyla devre dışı bırakıldı"
@@ -3363,7 +3475,7 @@ msgstr "Yayın Notu"
 msgid "Reload"
 msgid "Reload"
 msgstr "Tekrar yükle"
 msgstr "Tekrar yükle"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3392,7 +3504,7 @@ msgstr "Uzak Yapılandırmayı Yeniden Adlandır Hatası"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "Uzak Yapılandırmayı Yeniden Adlandırma Başarılı"
 msgstr "Uzak Yapılandırmayı Yeniden Adlandırma Başarılı"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3579,7 +3691,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr "Yeniden başlat"
 msgstr "Yeniden başlat"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
 #, fuzzy
@@ -3608,7 +3720,7 @@ msgstr "Uzak Yapılandırmayı Yeniden Adlandır Hatası"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "Uzak Yapılandırmayı Yeniden Adlandırma Başarılı"
 msgstr "Uzak Yapılandırmayı Yeniden Adlandırma Başarılı"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3783,10 +3895,6 @@ msgstr "Hesabı uygulamaya eklemek için QR kodunu cep telefonunuzla tarayın."
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 #, fuzzy
 #, fuzzy
 msgid "Secret has been copied"
 msgid "Secret has been copied"
@@ -3831,11 +3939,11 @@ msgstr "Sunucu Bilgisi"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Sunucu Bilgisi"
 msgstr "Sunucu Bilgisi"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3894,6 +4002,10 @@ msgid ""
 "com/guide/config-nginx.html for more information"
 "com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 #, fuzzy
 #, fuzzy
 msgid "Show"
 msgid "Show"
@@ -3957,6 +4069,14 @@ msgstr ""
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "Yükle"
 msgstr "Yükle"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
@@ -4162,7 +4282,7 @@ msgstr "Senkronizasyon Yapılandırma Hatası"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "Senkronizasyon Yapılandırması Başarılı"
 msgstr "Senkronizasyon Yapılandırması Başarılı"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 #, fuzzy
 #, fuzzy
 msgid "Sync Nodes"
 msgid "Sync Nodes"
@@ -4671,6 +4791,10 @@ msgstr "OTP kullanın"
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr "Kurtarma kodunu kullanın"
 msgstr "Kurtarma kodunu kullanın"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 #, fuzzy
 #, fuzzy
 msgid "User"
 msgid "User"
@@ -4829,14 +4953,18 @@ msgid ""
 "codes."
 "codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "Mevcut sürüm"
 msgstr "Mevcut sürüm"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4861,8 +4989,8 @@ msgstr "Sertifika özel anahtarını diske yazma"
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "Sertifikayı diske yazma"
 msgstr "Sertifikayı diske yazma"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 183 - 58
app/src/language/vi_VN/app.po

@@ -118,7 +118,7 @@ msgstr "Nâng cao"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 msgstr ""
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr ""
 msgstr ""
@@ -223,7 +223,7 @@ msgstr "Bạn chắc chắn muốn xóa nó "
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Bạn chắc chắn muốn xoá directive này ?"
 msgstr "Bạn chắc chắn muốn xoá directive này ?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Bạn chắc chắn muốn xóa nó "
 msgstr "Bạn chắc chắn muốn xóa nó "
@@ -242,7 +242,7 @@ msgstr "Bạn chắc chắn muốn xoá directive này ?"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Bạn chắc chắn muốn xoá location này ?"
 msgstr "Bạn chắc chắn muốn xoá location này ?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Bạn có chắc chắn muốn xóa tất cả thông báo không ?"
 msgstr "Bạn có chắc chắn muốn xóa tất cả thông báo không ?"
@@ -281,8 +281,8 @@ msgstr ""
 msgid "Author"
 msgid "Author"
 msgstr "Tác giả"
 msgstr "Tác giả"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr ""
 msgstr ""
 
 
@@ -378,6 +378,10 @@ msgstr "Cơ bản"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "Cơ bản"
 msgstr "Cơ bản"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+msgid "Basic Settings"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #, fuzzy
 #, fuzzy
 msgid "Batch Actions"
 msgid "Batch Actions"
@@ -410,16 +414,45 @@ msgstr "Xây dựng với"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "Thay đổi chứng chỉ"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
@@ -644,23 +677,23 @@ msgstr ""
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -697,7 +730,7 @@ msgstr ""
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -749,7 +782,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -908,6 +941,10 @@ msgstr ""
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "Mô tả"
 msgstr "Mô tả"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -1031,6 +1068,15 @@ msgstr ""
 msgid "Directives"
 msgid "Directives"
 msgstr "Directives"
 msgstr "Directives"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "Directives"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #, fuzzy
 #, fuzzy
 msgid "disable"
 msgid "disable"
@@ -1281,7 +1327,7 @@ msgstr "Đã bật"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Không thể bật tự động gia hạn SSL cho %{name}"
 msgstr "Không thể bật tự động gia hạn SSL cho %{name}"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1294,6 +1340,10 @@ msgstr "Bật không thành công"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "Bật TLS"
 msgstr "Bật TLS"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #, fuzzy
 #, fuzzy
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
@@ -1658,7 +1708,7 @@ msgstr "Không thể truy xuất thông tin chứng chỉ"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
@@ -1727,7 +1777,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "Nhận chứng chỉ"
 msgstr "Nhận chứng chỉ"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
@@ -1859,15 +1909,15 @@ msgstr "Đang lấy chứng chỉ, vui lòng đợi..."
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1961,6 +2011,10 @@ msgstr "Xuất"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Chứng chỉ"
 msgstr "Chứng chỉ"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -2119,17 +2173,13 @@ msgstr ""
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "with a password manager."
 "with a password manager."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2226,6 +2276,23 @@ msgstr ""
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Lưu thành công"
 msgstr "Lưu thành công"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "Ngày tạo"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+msgid "Loader Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2325,7 +2392,22 @@ msgstr "Người dùng"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "Quản lý Website"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "Quản lý Website"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "Quản lý Website"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2360,11 +2442,15 @@ msgstr "Phiên bản hiện tại"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "Phiên bản hiện tại"
 msgstr "Phiên bản hiện tại"
@@ -2374,6 +2460,10 @@ msgstr "Phiên bản hiện tại"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2391,10 +2481,18 @@ msgstr "Memory và Storage"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr ""
 msgstr ""
@@ -2662,8 +2760,8 @@ msgid ""
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2767,10 +2865,18 @@ msgstr "Thông báo"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "Không tìm thấy tệp tin"
 msgstr "Không tìm thấy tệp tin"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2797,12 +2903,13 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 #, fuzzy
 #, fuzzy
 msgid "Off"
 msgid "Off"
 msgstr "Ngoại tuyến"
 msgstr "Ngoại tuyến"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2833,7 +2940,8 @@ msgstr ""
 msgid "OK"
 msgid "OK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2841,7 +2949,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa."
 msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa."
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2857,14 +2965,6 @@ msgstr ""
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
@@ -2921,6 +3021,11 @@ msgstr "Quản lý Website"
 msgid "Params"
 msgid "Params"
 msgstr "Tham số"
 msgstr "Tham số"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr ""
 msgstr ""
@@ -2972,11 +3077,15 @@ msgstr ""
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "Nâng cấp core không thành công"
 msgstr "Nâng cấp core không thành công"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+msgid "Performance"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "Đã tắt thành công"
 msgstr "Đã tắt thành công"
@@ -3277,7 +3386,7 @@ msgstr "Ghi chú phát hành"
 msgid "Reload"
 msgid "Reload"
 msgstr "Tải lại"
 msgstr "Tải lại"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3306,7 +3415,7 @@ msgstr "Gia hạn chứng chỉ SSL thất bại"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "Gia hạn chứng chỉ SSL thành công"
 msgstr "Gia hạn chứng chỉ SSL thành công"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3481,7 +3590,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr "Khởi động lại"
 msgstr "Khởi động lại"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
 #, fuzzy
@@ -3508,7 +3617,7 @@ msgstr "Gia hạn chứng chỉ SSL thất bại"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "Gia hạn chứng chỉ SSL thành công"
 msgstr "Gia hạn chứng chỉ SSL thành công"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 msgstr ""
 
 
@@ -3674,10 +3783,6 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
@@ -3717,11 +3822,11 @@ msgstr "Thông tin máy chủ"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Thông tin máy chủ"
 msgstr "Thông tin máy chủ"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3774,6 +3879,10 @@ msgid ""
 "com/guide/config-nginx.html for more information"
 "com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr ""
 msgstr ""
@@ -3833,6 +3942,14 @@ msgstr ""
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "Cài đặt"
 msgstr "Cài đặt"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr ""
 msgstr ""
@@ -4025,7 +4142,7 @@ msgstr "Gia hạn chứng chỉ SSL thất bại"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "Gia hạn chứng chỉ SSL thành công"
 msgstr "Gia hạn chứng chỉ SSL thành công"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgid "Sync Nodes"
 msgstr ""
 msgstr ""
@@ -4466,6 +4583,10 @@ msgstr ""
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 #, fuzzy
 #, fuzzy
 msgid "User"
 msgid "User"
@@ -4612,14 +4733,18 @@ msgid ""
 "codes."
 "codes."
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "Phiên bản hiện tại"
 msgstr "Phiên bản hiện tại"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4641,8 +4766,8 @@ msgstr "Ghi Private Key vào disk"
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "Ghi chứng chỉ vào disk"
 msgstr "Ghi chứng chỉ vào disk"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 200 - 69
app/src/language/zh_CN/app.po

@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: \n"
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2025-04-11 20:32+0800\n"
+"PO-Revision-Date: 2025-04-12 22:02+0800\n"
 "Last-Translator: 0xJacky <me@jackyu.cn>\n"
 "Last-Translator: 0xJacky <me@jackyu.cn>\n"
 "Language-Team: Chinese (Simplified Han script) <https://weblate.nginxui.com/"
 "Language-Team: Chinese (Simplified Han script) <https://weblate.nginxui.com/"
 "projects/nginx-ui/frontend/zh_Hans/>\n"
 "projects/nginx-ui/frontend/zh_Hans/>\n"
@@ -118,7 +118,7 @@ msgstr "高级模式"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "然后,刷新此页面并再次点击添加 Passkey。"
 msgstr "然后,刷新此页面并再次点击添加 Passkey。"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr "全部"
 msgstr "全部"
@@ -210,7 +210,7 @@ msgstr "您确定要删除吗?"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "您确定要恢复这个项目吗?"
 msgstr "您确定要恢复这个项目吗?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "你确定要在以下同步节点上重载 Nginx?"
 msgstr "你确定要在以下同步节点上重载 Nginx?"
 
 
@@ -226,7 +226,7 @@ msgstr "您确定要删除这个项目吗?"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "您确定要删除这个 Location?"
 msgstr "您确定要删除这个 Location?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "你确定要在以下同步节点上重启 Nginx 吗?"
 msgstr "你确定要在以下同步节点上重启 Nginx 吗?"
 
 
@@ -263,8 +263,8 @@ msgstr "认证设置"
 msgid "Author"
 msgid "Author"
 msgstr "作者"
 msgstr "作者"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr "自动"
 msgstr "自动"
 
 
@@ -355,6 +355,10 @@ msgstr "基本"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "基本模式"
 msgstr "基本模式"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+msgid "Basic Settings"
+msgstr "基本设置"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 msgid "Batch Actions"
 msgid "Batch Actions"
 msgstr "批量操作"
 msgstr "批量操作"
@@ -384,16 +388,44 @@ msgstr "构建基于"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr "CA Dir"
 msgstr "CA Dir"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr "缓存"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr "在此时间内未访问的缓存项将被删除"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr "缓存加载器处理时间阈值"
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr "缓存管理器进程数"
 msgstr "缓存管理器进程数"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr "缓存管理器处理时间阈值"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr "缓存管理器设置"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+msgid "Cache Path"
+msgstr "缓存路径"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr "缓存进程数"
 msgstr "缓存进程数"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr "缓存子目录级别结构,如 1:2"
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr "CADir"
 msgstr "CADir"
@@ -602,23 +634,23 @@ msgstr "单击或拖动备份文件到此区域上传"
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr "点击复制"
 msgstr "点击复制"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr "客户端请求体缓冲区大小"
 msgstr "客户端请求体缓冲区大小"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr "客户端请求头缓冲区大小"
 msgstr "客户端请求头缓冲区大小"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr "客户端最大请求体大小"
 msgstr "客户端最大请求体大小"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr "客户端请求体缓冲区大小"
 msgstr "客户端请求体缓冲区大小"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr "客户端请求头缓冲区大小"
 msgstr "客户端请求头缓冲区大小"
 
 
@@ -653,7 +685,7 @@ msgstr "比较选定"
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr "与当前的比较"
 msgstr "与当前的比较"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "压缩级别,1 为最低,9 为最高"
 msgstr "压缩级别,1 为最低,9 为最高"
 
 
@@ -701,7 +733,7 @@ msgstr "连接错误,尝试重新连接..."
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr "连接中断,请刷新页面。"
 msgstr "连接中断,请刷新页面。"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr "连接超时时间"
 msgstr "连接超时时间"
 
 
@@ -853,6 +885,10 @@ msgstr "天"
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "解密失败"
 msgstr "解密失败"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr "定义共享内存区名称和大小,例如 proxy_cache:10m"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -965,6 +1001,14 @@ msgstr "指令 index 超出范围"
 msgid "Directives"
 msgid "Directives"
 msgstr "指令"
 msgstr "指令"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+msgid "Directory Levels"
+msgstr "目录级别"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr "存储缓存文件的目录路径"
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 msgid "disable"
 msgid "disable"
 msgstr "禁用"
 msgstr "禁用"
@@ -1186,7 +1230,7 @@ msgstr "二步验证启用成功"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "启用 %{name} 自动续签失败"
 msgstr "启用 %{name} 自动续签失败"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr "启用内容传输压缩"
 msgstr "启用内容传输压缩"
 
 
@@ -1198,6 +1242,10 @@ msgstr "启用失败"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "启用 HTTPS"
 msgstr "启用 HTTPS"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr "启用代理缓存"
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
 msgstr "启用远程站点错误"
 msgstr "启用远程站点错误"
@@ -1517,7 +1565,7 @@ msgstr "生成初始化向量失败:{0}"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "获取证书信息失败"
 msgstr "获取证书信息失败"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "获取 Nginx 性能参数失败"
 msgstr "获取 Nginx 性能参数失败"
 
 
@@ -1577,7 +1625,7 @@ msgstr "恢复 Nginx UI 文件失败:{0}"
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "证书撤销失败"
 msgstr "证书撤销失败"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "保存 Nginx 性能参数失败"
 msgstr "保存 Nginx 性能参数失败"
 
 
@@ -1699,15 +1747,15 @@ msgstr "正在获取证书,请稍等..."
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Github 代理"
 msgstr "Github 代理"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr "GZIP压缩"
 msgstr "GZIP压缩"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr "GZIP 压缩级别"
 msgstr "GZIP 压缩级别"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr "GZIP 最小长度"
 msgstr "GZIP 最小长度"
 
 
@@ -1801,6 +1849,10 @@ msgstr "导入"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "导入证书"
 msgstr "导入证书"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr "非活动时间"
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -1949,10 +2001,6 @@ msgstr "颁发者:%{issuer}"
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Jwt 密钥"
 msgstr "Jwt 密钥"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr "KB"
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
@@ -1960,7 +2008,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "请像保护密码一样安全地保管您的恢复代码。我们建议使用密码管理器保存它们。"
 "请像保护密码一样安全地保管您的恢复代码。我们建议使用密码管理器保存它们。"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr "Keepalive 超时"
 msgstr "Keepalive 超时"
 
 
@@ -2047,6 +2095,22 @@ msgstr "从设置中加载"
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "加载成功"
 msgstr "加载成功"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+msgid "Loader Files"
+msgstr "加载器文件"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+msgid "Loader Settings"
+msgstr "加载器设置"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr "加载器睡眠"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr "加载器阈值"
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr "正在加载数据..."
 msgstr "正在加载数据..."
@@ -2144,7 +2208,19 @@ msgstr "用户管理"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "托管证书"
 msgstr "托管证书"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+msgid "Manager Files"
+msgstr "管理器文件"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+msgid "Manager Sleep"
+msgstr "管理器睡眠"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+msgid "Manager Threshold"
+msgstr "管理器阈值"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr "手动"
 msgstr "手动"
 
 
@@ -2178,11 +2254,15 @@ msgstr "最大并发连接数"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr "每秒最大请求次数"
 msgstr "每秒最大请求次数"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr "最大缓存大小"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr "客户端请求体的最大尺寸"
 msgstr "客户端请求体的最大尺寸"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "最大并发连接数"
 msgstr "最大并发连接数"
 
 
@@ -2191,6 +2271,10 @@ msgstr "最大并发连接数"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr "每个工作进程的最大连接数"
 msgstr "每个工作进程的最大连接数"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr "缓存的最大总容量"
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr "最大工作进程数:"
 msgstr "最大工作进程数:"
@@ -2208,10 +2292,18 @@ msgstr "内存与存储"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr "内存使用量(RSS)"
 msgstr "内存使用量(RSS)"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr "压缩文件的最小尺寸"
 msgstr "压缩文件的最小尺寸"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr "最小可用空间"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr "缓存目录中的最小可用空间"
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr "分钟"
 msgstr "分钟"
@@ -2460,8 +2552,8 @@ msgid ""
 msgstr "Nginx UI 配置已恢复,几秒钟后将自动重启。"
 msgstr "Nginx UI 配置已恢复,几秒钟后将自动重启。"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2556,10 +2648,18 @@ msgstr "通知"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "未找到通知程序"
 msgstr "未找到通知程序"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr "并发工作进程数,自动设置为 CPU 内核数"
 msgstr "并发工作进程数,自动设置为 CPU 内核数"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr "缓存加载器一次处理的文件数量"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr "缓存管理器一次处理的文件数量"
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2585,11 +2685,12 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr "某些用户在使用 Firefox 首次访问时,OCSP Must Staple 可能会导致错误。"
 msgstr "某些用户在使用 Firefox 首次访问时,OCSP Must Staple 可能会导致错误。"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 msgid "Off"
 msgid "Off"
 msgstr "关闭"
 msgstr "关闭"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2620,7 +2721,8 @@ msgstr "确定"
 msgid "OK"
 msgid "OK"
 msgstr "确定"
 msgstr "确定"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr "开启"
 msgstr "开启"
 
 
@@ -2628,7 +2730,7 @@ msgstr "开启"
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "一旦验证完成,这些记录将被删除。"
 msgstr "一旦验证完成,这些记录将被删除。"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2644,14 +2746,6 @@ msgstr "只允许使用zip文件"
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr "优化 Nginx 性能"
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr "性能调优"
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr "或"
 msgstr "或"
@@ -2706,6 +2800,11 @@ msgstr "分页大小"
 msgid "Params"
 msgid "Params"
 msgstr "参数"
 msgstr "参数"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr "参数优化"
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr "Passkey"
 msgstr "Passkey"
@@ -2758,11 +2857,15 @@ msgstr "执行"
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "执行核心升级错误"
 msgstr "执行核心升级错误"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+msgid "Performance"
+msgstr "性能"
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr "性能指标"
 msgstr "性能指标"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "性能调优参数保存成功"
 msgstr "性能调优参数保存成功"
 
 
@@ -3046,7 +3149,7 @@ msgstr "发行日志"
 msgid "Reload"
 msgid "Reload"
 msgstr "重载"
 msgstr "重载"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3070,7 +3173,7 @@ msgstr "重载远程 Nginx 错误"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "重载远程 Nginx 成功"
 msgstr "重载远程 Nginx 成功"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr "重载请求失败,请检查网络连接"
 msgstr "重载请求失败,请检查网络连接"
 
 
@@ -3224,7 +3327,7 @@ msgstr "响应"
 msgid "Restart"
 msgid "Restart"
 msgstr "重启"
 msgstr "重启"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
 msgid "Restart Nginx"
@@ -3246,7 +3349,7 @@ msgstr "重启远程 Nginx 错误"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "重启远程 Nginx 成功"
 msgstr "重启远程 Nginx 成功"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr "重启请求失败,请检查网络连接"
 msgstr "重启请求失败,请检查网络连接"
 
 
@@ -3396,10 +3499,6 @@ msgstr "用手机扫描二维码,将账户添加到应用程序中。"
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr "秒"
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr "密钥已复制"
 msgstr "密钥已复制"
@@ -3438,11 +3537,11 @@ msgstr "服务器"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "服务器信息"
 msgstr "服务器信息"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr "服务器名称哈希桶大小"
 msgstr "服务器名称哈希桶大小"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr "服务器名称哈希表大小"
 msgstr "服务器名称哈希表大小"
 
 
@@ -3482,19 +3581,23 @@ msgstr "使用 HTTP01 challenge provider"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
-"com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
+"nginxui.com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
-"Settings.NginxLogSettings.AccessLogPath 为空,更多信息请参阅 https://nginxui."
-"com/guide/config-nginx.html"
+"Settings.NginxLogSettings.AccessLogPath 为空,更多信息请参阅 https://"
+"nginxui.com/guide/config-nginx.html"
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
-"com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
+"nginxui.com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
-"Settings.NginxLogSettings.ErrorLogPath为空,更多信息请参阅 https://nginxui."
-"com/guide/config-nginx.html"
+"Settings.NginxLogSettings.ErrorLogPath为空,更多信息请参阅 https://"
+"nginxui.com/guide/config-nginx.html"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr "共享内存区"
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
@@ -3548,6 +3651,14 @@ msgstr "Sites-enabled 目录不存在"
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "跳过安装"
 msgstr "跳过安装"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr "缓存加载器迭代之间的休眠时间"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr "缓存管理器迭代之间的休眠时间"
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "SSL 证书内容"
 msgstr "SSL 证书内容"
@@ -3725,7 +3836,7 @@ msgstr "同步配置错误"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "同步配置成功"
 msgstr "同步配置成功"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgid "Sync Nodes"
 msgstr "同步节点"
 msgstr "同步节点"
@@ -4157,6 +4268,10 @@ msgstr "使用二步验证码"
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr "使用恢复代码"
 msgstr "使用恢复代码"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr "使用临时路径"
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 msgid "User"
 msgid "User"
 msgstr "用户"
 msgstr "用户"
@@ -4301,13 +4416,17 @@ msgid ""
 "codes."
 "codes."
 msgstr "当您生成新的恢复代码时,必须下载或打印新的代码。"
 msgstr "当您生成新的恢复代码时,必须下载或打印新的代码。"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr "写入临时文件时是否使用临时路径"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "工作进程连接数"
 msgstr "工作进程连接数"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr "工作进程"
 msgstr "工作进程"
@@ -4329,8 +4448,8 @@ msgstr "正在将证书私钥写入磁盘"
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "正在将证书写入磁盘"
 msgstr "正在将证书写入磁盘"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
@@ -4391,6 +4510,18 @@ msgstr "您的旧代码将不再有效。"
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "你的 Passkeys"
 msgstr "你的 Passkeys"
 
 
+#~ msgid "KB"
+#~ msgstr "KB"
+
+#~ msgid "Optimize Nginx Performance"
+#~ msgstr "优化 Nginx 性能"
+
+#~ msgid "Optimize Performance"
+#~ msgstr "性能调优"
+
+#~ msgid "seconds"
+#~ msgstr "秒"
+
 #~ msgid "Access Token"
 #~ msgid "Access Token"
 #~ msgstr "Access Token"
 #~ msgstr "Access Token"
 
 
@@ -4468,8 +4599,8 @@ msgstr "你的 Passkeys"
 #~ msgstr "请将远程 Nginx UI 升级到最新版本"
 #~ msgstr "请将远程 Nginx UI 升级到最新版本"
 
 
 #~ msgid ""
 #~ msgid ""
-#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: "
-#~ "%{resp}"
+#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %"
+#~ "{resp}"
 #~ msgstr ""
 #~ msgstr ""
 #~ "将 %{env_name} 上的 %{orig_path} 重命名为 %{new_path} 失败,响应:%{resp}"
 #~ "将 %{env_name} 上的 %{orig_path} 重命名为 %{new_path} 失败,响应:%{resp}"
 
 

+ 186 - 58
app/src/language/zh_TW/app.po

@@ -122,7 +122,7 @@ msgstr "進階模式"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "然後,重新整理此頁面並再次點選新增通行密鑰。"
 msgstr "然後,重新整理此頁面並再次點選新增通行密鑰。"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:117
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgid "All"
 msgstr "全部"
 msgstr "全部"
@@ -214,7 +214,7 @@ msgstr "您確定要刪除嗎?"
 msgid "Are you sure you want to recover this item?"
 msgid "Are you sure you want to recover this item?"
 msgstr "您確定要恢復此項目嗎?"
 msgstr "您確定要恢復此項目嗎?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "您確定要在以下同步節點上重新載入Nginx嗎?"
 msgstr "您確定要在以下同步節點上重新載入Nginx嗎?"
 
 
@@ -230,7 +230,7 @@ msgstr "您確定要刪除此項目嗎?"
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "您確定要刪除此 Location 嗎?"
 msgstr "您確定要刪除此 Location 嗎?"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "您確定要在以下同步節點上重新啟動Nginx嗎?"
 msgstr "您確定要在以下同步節點上重新啟動Nginx嗎?"
 
 
@@ -267,8 +267,8 @@ msgstr "認證設定"
 msgid "Author"
 msgid "Author"
 msgstr "作者"
 msgstr "作者"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:178
-#: src/views/dashboard/components/PerformanceOptimization.vue:189
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
 msgid "Auto"
 msgid "Auto"
 msgstr "自動"
 msgstr "自動"
 
 
@@ -359,6 +359,11 @@ msgstr "基本"
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr "基本模式"
 msgstr "基本模式"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+#, fuzzy
+msgid "Basic Settings"
+msgstr "多重要素驗證設定"
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
 msgid "Batch Actions"
 msgid "Batch Actions"
 msgstr "批次操作"
 msgstr "批次操作"
@@ -388,16 +393,45 @@ msgstr "構建基於"
 msgid "CA Dir"
 msgid "CA Dir"
 msgstr "CA Dir"
 msgstr "CA Dir"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/composables/usePerformanceMetrics.ts:139
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 #: src/views/dashboard/components/PerformanceTablesCard.vue:94
 msgid "Cache manager processes"
 msgid "Cache manager processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+#, fuzzy
+msgid "Cache Path"
+msgstr "變更後路徑"
+
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/composables/usePerformanceMetrics.ts:57
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 #: src/views/dashboard/components/ProcessDistributionCard.vue:14
 msgid "Cache Processes"
 msgid "Cache Processes"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
 #: src/views/preference/CertSettings.vue:19
 #: src/views/preference/CertSettings.vue:19
 msgid "CADir"
 msgid "CADir"
 msgstr "CADir"
 msgstr "CADir"
@@ -608,23 +642,23 @@ msgstr "點擊或拖曳備份檔案至此區域上傳"
 msgid "Click to copy"
 msgid "Click to copy"
 msgstr "點擊複製"
 msgstr "點擊複製"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:307
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
 msgid "Client Body Buffer Size"
 msgid "Client Body Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:289
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
 msgid "Client Header Buffer Size"
 msgid "Client Header Buffer Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:259
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
 msgid "Client Max Body Size"
 msgid "Client Max Body Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:308
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
 msgid "Client request body buffer size"
 msgid "Client request body buffer size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:290
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
 msgid "Client request header buffer size"
 msgid "Client request header buffer size"
 msgstr ""
 msgstr ""
 
 
@@ -659,7 +693,7 @@ msgstr "比較選定"
 msgid "Compare with Current"
 msgid "Compare with Current"
 msgstr "與當前比較"
 msgstr "與當前比較"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:248
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
@@ -708,7 +742,7 @@ msgstr ""
 msgid "Connection lost, please refresh the page."
 msgid "Connection lost, please refresh the page."
 msgstr "連接丟失,請重新整理。"
 msgstr "連接丟失,請重新整理。"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:207
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
 msgid "Connection timeout period"
 msgid "Connection timeout period"
 msgstr ""
 msgstr ""
 
 
@@ -861,6 +895,10 @@ msgstr "天"
 msgid "Decryption failed"
 msgid "Decryption failed"
 msgstr "解密失敗"
 msgstr "解密失敗"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
 #: src/views/certificate/components/RemoveCert.vue:87
@@ -974,6 +1012,15 @@ msgstr "指令索引超出範圍"
 msgid "Directives"
 msgid "Directives"
 msgstr "指令"
 msgstr "指令"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+#, fuzzy
+msgid "Directory Levels"
+msgstr "指令"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 #: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
 msgid "disable"
 msgid "disable"
 msgstr "禁用"
 msgstr "禁用"
@@ -1195,7 +1242,7 @@ msgstr "啟用多因素身份驗證成功"
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "啟用 %{name} 自動續簽失敗"
 msgstr "啟用 %{name} 自動續簽失敗"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:222
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgid "Enable compression for content transfer"
 msgstr ""
 msgstr ""
 
 
@@ -1207,6 +1254,10 @@ msgstr "啟用失敗"
 msgid "Enable HTTPS"
 msgid "Enable HTTPS"
 msgstr "啟用 HTTPS"
 msgstr "啟用 HTTPS"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 #: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
 msgid "Enable Remote Site Error"
 msgid "Enable Remote Site Error"
 msgstr "啟用遠端站點錯誤"
 msgstr "啟用遠端站點錯誤"
@@ -1527,7 +1578,7 @@ msgstr "無法生成初始化向量:{0}"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "取得憑證資訊失敗"
 msgstr "取得憑證資訊失敗"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:56
+#: src/views/dashboard/components/ParamsOptimization.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Failed to get Nginx performance settings"
 msgid "Failed to get Nginx performance settings"
 msgstr "取得憑證資訊失敗"
 msgstr "取得憑證資訊失敗"
@@ -1590,7 +1641,7 @@ msgstr "無法恢復Nginx UI文件:{0}"
 msgid "Failed to revoke certificate"
 msgid "Failed to revoke certificate"
 msgstr "獲取憑證失敗"
 msgstr "獲取憑證失敗"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:126
+#: src/views/dashboard/components/ParamsOptimization.vue:90
 #, fuzzy
 #, fuzzy
 msgid "Failed to save Nginx performance settings"
 msgid "Failed to save Nginx performance settings"
 msgstr "取得憑證資訊失敗"
 msgstr "取得憑證資訊失敗"
@@ -1714,15 +1765,15 @@ msgstr "正在取得憑證,請稍候..."
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Github 代理"
 msgstr "Github 代理"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:221
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
 msgid "GZIP Compression"
 msgid "GZIP Compression"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:247
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
 msgid "GZIP Compression Level"
 msgid "GZIP Compression Level"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:233
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
 msgid "GZIP Min Length"
 msgid "GZIP Min Length"
 msgstr ""
 msgstr ""
 
 
@@ -1816,6 +1867,10 @@ msgstr "導入"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "導入憑證"
 msgstr "導入憑證"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 #: src/views/dashboard/components/ProcessDistributionCard.vue:54
 msgid ""
 msgid ""
 "Includes master process, worker processes, cache processes, and other Nginx "
 "Includes master process, worker processes, cache processes, and other Nginx "
@@ -1964,10 +2019,6 @@ msgstr "發行者:%{issuer}"
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Jwt Secret"
 msgstr "Jwt Secret"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:242
-msgid "KB"
-msgstr ""
-
 #: src/views/preference/components/RecoveryCodes.vue:74
 #: src/views/preference/components/RecoveryCodes.vue:74
 msgid ""
 msgid ""
 "Keep your recovery codes as safe as your password. We recommend saving them "
 "Keep your recovery codes as safe as your password. We recommend saving them "
@@ -1975,7 +2026,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "請將您的復原代碼與密碼同樣妥善保管。我們建議使用密碼管理工具來儲存它們。"
 "請將您的復原代碼與密碼同樣妥善保管。我們建議使用密碼管理工具來儲存它們。"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:206
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
 msgid "Keepalive Timeout"
 msgid "Keepalive Timeout"
 msgstr ""
 msgstr ""
 
 
@@ -2063,6 +2114,24 @@ msgstr "從設置加載"
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "加載成功"
 msgstr "加載成功"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+#, fuzzy
+msgid "Loader Files"
+msgstr "創建檔案"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+#, fuzzy
+msgid "Loader Settings"
+msgstr "從設置加載"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
 #: src/views/dashboard/NginxDashBoard.vue:178
 #: src/views/dashboard/NginxDashBoard.vue:178
 msgid "Loading data..."
 msgid "Loading data..."
 msgstr ""
 msgstr ""
@@ -2159,7 +2228,22 @@ msgstr "管理使用者"
 msgid "Managed Certificate"
 msgid "Managed Certificate"
 msgstr "受管理的憑證"
 msgstr "受管理的憑證"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:179
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+#, fuzzy
+msgid "Manager Files"
+msgstr "管理網站"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+#, fuzzy
+msgid "Manager Sleep"
+msgstr "管理網站"
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+#, fuzzy
+msgid "Manager Threshold"
+msgstr "管理 Stream"
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
 msgid "Manual"
 msgid "Manual"
 msgstr ""
 msgstr ""
 
 
@@ -2194,11 +2278,15 @@ msgstr "當前內容"
 msgid "Max Requests Per Second"
 msgid "Max Requests Per Second"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:260
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
 msgid "Maximum client request body size"
 msgid "Maximum client request body size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:195
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
 #, fuzzy
 #, fuzzy
 msgid "Maximum number of concurrent connections"
 msgid "Maximum number of concurrent connections"
 msgstr "當前內容"
 msgstr "當前內容"
@@ -2208,6 +2296,10 @@ msgstr "當前內容"
 msgid "Maximum number of connections per worker process"
 msgid "Maximum number of connections per worker process"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 #: src/views/dashboard/components/PerformanceTablesCard.vue:195
 msgid "Maximum worker process number:"
 msgid "Maximum worker process number:"
 msgstr ""
 msgstr ""
@@ -2225,10 +2317,18 @@ msgstr "記憶體與儲存"
 msgid "Memory Usage (RSS)"
 msgid "Memory Usage (RSS)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:234
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
 msgid "Minimum file size for compression"
 msgid "Minimum file size for compression"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:29
 #: src/views/preference/LogrotateSettings.vue:29
 msgid "Minutes"
 msgid "Minutes"
 msgstr "分鐘"
 msgstr "分鐘"
@@ -2480,8 +2580,8 @@ msgid ""
 msgstr "Nginx UI 設定已恢復,將在幾秒後自動重新啟動。"
 msgstr "Nginx UI 設定已恢復,將在幾秒後自動重新啟動。"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/Notification/Notification.vue:133
 #: src/components/Notification/Notification.vue:133
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
@@ -2576,10 +2676,18 @@ msgstr "通知"
 msgid "Notifier not found"
 msgid "Notifier not found"
 msgstr "通知器未找到"
 msgstr "通知器未找到"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:173
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgid "Number of concurrent worker processes, auto sets to CPU core count"
 msgstr ""
 msgstr ""
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:129
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/composables/usePerformanceMetrics.ts:169
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
 #: src/views/dashboard/components/PerformanceTablesCard.vue:120
@@ -2605,12 +2713,13 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr "OCSP 必須裝訂可能會導致某些用戶在首次使用 Firefox 訪問時出現錯誤。"
 msgstr "OCSP 必須裝訂可能會導致某些用戶在首次使用 Firefox 訪問時出現錯誤。"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:227
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
 #, fuzzy
 #, fuzzy
 msgid "Off"
 msgid "Off"
 msgstr "離線"
 msgstr "離線"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
 #: src/views/environments/list/envColumns.tsx:56
@@ -2641,7 +2750,8 @@ msgstr "確定"
 msgid "OK"
 msgid "OK"
 msgstr "確定"
 msgstr "確定"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:226
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
 msgid "On"
 msgid "On"
 msgstr ""
 msgstr ""
 
 
@@ -2649,7 +2759,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "驗證完成後,記錄將被刪除。"
 msgstr "驗證完成後,記錄將被刪除。"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:161
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
@@ -2665,14 +2775,6 @@ msgstr "只允許壓縮檔"
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:164
-msgid "Optimize Nginx Performance"
-msgstr ""
-
-#: src/views/dashboard/components/PerformanceOptimization.vue:158
-msgid "Optimize Performance"
-msgstr ""
-
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 #: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
 msgid "Or"
 msgid "Or"
 msgstr "或"
 msgstr "或"
@@ -2727,6 +2829,11 @@ msgstr "頁面大小"
 msgid "Params"
 msgid "Params"
 msgstr "參數"
 msgstr "參數"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
 msgid "Passkey"
 msgid "Passkey"
 msgstr "通行密鑰"
 msgstr "通行密鑰"
@@ -2779,11 +2886,16 @@ msgstr "執行"
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
 msgstr "執行核心升級錯誤"
 msgstr "執行核心升級錯誤"
 
 
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+#, fuzzy
+msgid "Performance"
+msgstr "執行"
+
 #: src/views/dashboard/NginxDashBoard.vue:185
 #: src/views/dashboard/NginxDashBoard.vue:185
 msgid "Performance Metrics"
 msgid "Performance Metrics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:122
+#: src/views/dashboard/components/ParamsOptimization.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Performance settings saved successfully"
 msgid "Performance settings saved successfully"
 msgstr "維護模式已成功停用"
 msgstr "維護模式已成功停用"
@@ -3068,7 +3180,7 @@ msgstr "發行公告"
 msgid "Reload"
 msgid "Reload"
 msgstr "重新載入"
 msgstr "重新載入"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:138
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
 #: src/views/environments/list/Environment.vue:120
@@ -3092,7 +3204,7 @@ msgstr "重新載入遠端Nginx錯誤"
 msgid "Reload Remote Nginx Success"
 msgid "Reload Remote Nginx Success"
 msgstr "遠端Nginx重載成功"
 msgstr "遠端Nginx重載成功"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:86
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
 msgid "Reload request failed, please check your network connection"
 msgid "Reload request failed, please check your network connection"
 msgstr "重新載入請求失敗,請檢查您的網路連線"
 msgstr "重新載入請求失敗,請檢查您的網路連線"
 
 
@@ -3245,7 +3357,7 @@ msgstr ""
 msgid "Restart"
 msgid "Restart"
 msgstr "重新啟動"
 msgstr "重新啟動"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:150
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
 msgid "Restart Nginx"
@@ -3267,7 +3379,7 @@ msgstr "遠端Nginx重啟錯誤"
 msgid "Restart Remote Nginx Success"
 msgid "Restart Remote Nginx Success"
 msgstr "遠端Nginx重啟成功"
 msgstr "遠端Nginx重啟成功"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:106
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
 msgid "Restart request failed, please check your network connection"
 msgid "Restart request failed, please check your network connection"
 msgstr "重新啟動請求失敗,請檢查您的網路連線"
 msgstr "重新啟動請求失敗,請檢查您的網路連線"
 
 
@@ -3419,10 +3531,6 @@ msgstr "用手機掃描二維碼將賬戶添加到應用程序中。"
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:216
-msgid "seconds"
-msgstr ""
-
 #: src/views/preference/components/TOTP.vue:109
 #: src/views/preference/components/TOTP.vue:109
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr "密鑰已複製"
 msgstr "密鑰已複製"
@@ -3461,11 +3569,11 @@ msgstr "伺服器"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "伺服器資訊"
 msgstr "伺服器資訊"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:277
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
 msgid "Server Names Hash Bucket Size"
 msgid "Server Names Hash Bucket Size"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:278
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
 msgid "Server names hash table size"
 msgid "Server names hash table size"
 msgstr ""
 msgstr ""
 
 
@@ -3519,6 +3627,10 @@ msgstr ""
 "Settings.NginxLogSettings.ErrorLogPath 為空,請參考 https://nginxui.com/"
 "Settings.NginxLogSettings.ErrorLogPath 為空,請參考 https://nginxui.com/"
 "guide/config-nginx.html 了解更多資訊"
 "guide/config-nginx.html 了解更多資訊"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
 msgid "Show"
 msgid "Show"
 msgstr "顯示"
 msgstr "顯示"
@@ -3571,6 +3683,14 @@ msgstr "sites-enabled 資料夾不存在"
 msgid "Skip Installation"
 msgid "Skip Installation"
 msgstr "跳過安裝"
 msgstr "跳過安裝"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
 #: src/views/certificate/components/CertificateEditor.vue:213
 #: src/views/certificate/components/CertificateEditor.vue:213
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "SSL 憑證內容"
 msgstr "SSL 憑證內容"
@@ -3749,7 +3869,7 @@ msgstr "同步配置錯誤"
 msgid "Sync Config Success"
 msgid "Sync Config Success"
 msgstr "同步配置成功"
 msgstr "同步配置成功"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:124
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
 #: src/views/environments/group/EnvGroup.vue:18
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgid "Sync Nodes"
 msgstr "同步節點"
 msgstr "同步節點"
@@ -4182,6 +4302,10 @@ msgstr "使用一次性密碼"
 msgid "Use recovery code"
 msgid "Use recovery code"
 msgstr "使用恢復碼"
 msgstr "使用恢復碼"
 
 
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:333
 #: src/components/ChatGPT/ChatGPT.vue:333
 msgid "User"
 msgid "User"
 msgstr "使用者名稱"
 msgstr "使用者名稱"
@@ -4327,14 +4451,18 @@ msgid ""
 "codes."
 "codes."
 msgstr "當您生成新的復原代碼時,必須下載或列印新的代碼。"
 msgstr "當您生成新的復原代碼時,必須下載或列印新的代碼。"
 
 
-#: src/views/dashboard/components/PerformanceOptimization.vue:194
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
 #, fuzzy
 #, fuzzy
 msgid "Worker Connections"
 msgid "Worker Connections"
 msgstr "當前內容"
 msgstr "當前內容"
 
 
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/composables/usePerformanceMetrics.ts:55
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
 #: src/views/dashboard/components/ConnectionMetricsCard.vue:48
-#: src/views/dashboard/components/PerformanceOptimization.vue:172
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 #: src/views/dashboard/components/ProcessDistributionCard.vue:12
 msgid "Worker Processes"
 msgid "Worker Processes"
 msgstr ""
 msgstr ""
@@ -4356,8 +4484,8 @@ msgstr "將憑證私鑰寫入磁碟"
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
 msgstr "將憑證寫入磁碟"
 msgstr "將憑證寫入磁碟"
 
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/AuthSettings.vue:163
 #: src/views/preference/CertSettings.vue:72
 #: src/views/preference/CertSettings.vue:72
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96

+ 1 - 1
app/src/views/config/ConfigEditor.vue

@@ -51,7 +51,7 @@ const modifiedAt = ref('')
 const nginxConfigBase = ref('')
 const nginxConfigBase = ref('')
 
 
 const newPath = computed(() => {
 const newPath = computed(() => {
-  // 组合路径后解码显示
+  // Decode and display after combining paths
   const path = [nginxConfigBase.value, basePath.value, data.value.name]
   const path = [nginxConfigBase.value, basePath.value, data.value.name]
     .filter(v => v)
     .filter(v => v)
     .join('/')
     .join('/')

+ 2 - 2
app/src/views/dashboard/NginxDashBoard.vue

@@ -7,7 +7,7 @@ import { useUserStore } from '@/pinia'
 import { useGlobalStore } from '@/pinia/moudule/global'
 import { useGlobalStore } from '@/pinia/moudule/global'
 import { ClockCircleOutlined, ReloadOutlined } from '@ant-design/icons-vue'
 import { ClockCircleOutlined, ReloadOutlined } from '@ant-design/icons-vue'
 import ConnectionMetricsCard from './components/ConnectionMetricsCard.vue'
 import ConnectionMetricsCard from './components/ConnectionMetricsCard.vue'
-import PerformanceOptimization from './components/PerformanceOptimization.vue'
+import ParamsOptimization from './components/ParamsOptimization.vue'
 import PerformanceStatisticsCard from './components/PerformanceStatisticsCard.vue'
 import PerformanceStatisticsCard from './components/PerformanceStatisticsCard.vue'
 import PerformanceTablesCard from './components/PerformanceTablesCard.vue'
 import PerformanceTablesCard from './components/PerformanceTablesCard.vue'
 import ProcessDistributionCard from './components/ProcessDistributionCard.vue'
 import ProcessDistributionCard from './components/ProcessDistributionCard.vue'
@@ -184,7 +184,7 @@ onMounted(() => {
         <!-- Top performance metrics card -->
         <!-- Top performance metrics card -->
         <ACard class="mb-4" :title="$gettext('Performance Metrics')" :bordered="false">
         <ACard class="mb-4" :title="$gettext('Performance Metrics')" :bordered="false">
           <template #extra>
           <template #extra>
-            <PerformanceOptimization />
+            <ParamsOptimization />
           </template>
           </template>
           <PerformanceStatisticsCard :nginx-info="nginxInfo" />
           <PerformanceStatisticsCard :nginx-info="nginxInfo" />
         </ACard>
         </ACard>

+ 126 - 0
app/src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue

@@ -0,0 +1,126 @@
+<script setup lang="ts">
+import type { NginxConfigInfo } from '@/api/ngx'
+import type { CheckedType } from '@/types'
+import SizeInput from './SizeInput.vue'
+import TimeInput from './TimeInput.vue'
+
+const performanceConfig = defineModel<NginxConfigInfo>({
+  default: reactive({
+    proxy_cache: {},
+  }),
+})
+
+const workerProcessAutoMode = ref<boolean>(true)
+
+function handleWorkerProcessAutoModeChange(checked: CheckedType) {
+  if (checked) {
+    performanceConfig.value.worker_processes = 'auto'
+  }
+}
+</script>
+
+<template>
+  <AForm layout="vertical">
+    <AFormItem
+      :label="$gettext('Worker Processes')"
+      :help="$gettext('Number of concurrent worker processes, auto sets to CPU core count')"
+    >
+      <ASpace>
+        <ASwitch
+          v-model:checked="workerProcessAutoMode"
+          :checked-children="$gettext('Auto')"
+          :un-checked-children="$gettext('Manual')"
+          @change="handleWorkerProcessAutoModeChange"
+        />
+        <AInputNumber
+          v-if="!workerProcessAutoMode"
+          v-model:value="performanceConfig.worker_processes"
+          :min="1"
+          :max="32"
+          style="width: 120px"
+          string-mode
+        />
+        <span v-else>{{ performanceConfig.worker_processes }} ({{ $gettext('Auto') }})</span>
+      </ASpace>
+    </AFormItem>
+
+    <AFormItem
+      :label="$gettext('Worker Connections')"
+      :help="$gettext('Maximum number of concurrent connections')"
+    >
+      <AInputNumber
+        v-model:value="performanceConfig.worker_connections"
+        :min="512"
+        :max="65536"
+        style="width: 120px"
+      />
+    </AFormItem>
+
+    <AFormItem
+      :label="$gettext('Keepalive Timeout')"
+      :help="$gettext('Connection timeout period')"
+    >
+      <TimeInput v-model="performanceConfig.keepalive_timeout" />
+    </AFormItem>
+
+    <AFormItem
+      :label="$gettext('GZIP Compression')"
+      :help="$gettext('Enable compression for content transfer')"
+    >
+      <ASwitch
+        v-model:checked="performanceConfig.gzip"
+        :checked-children="$gettext('On')"
+        :un-checked-children="$gettext('Off')"
+        checked-value="on"
+        un-checked-value="off"
+      />
+    </AFormItem>
+
+    <AFormItem
+      :label="$gettext('GZIP Min Length')"
+      :help="$gettext('Minimum file size for compression')"
+    >
+      <AInputNumber v-model:value="performanceConfig.gzip_min_length" />
+    </AFormItem>
+
+    <AFormItem
+      :label="$gettext('GZIP Compression Level')"
+      :help="$gettext('Compression level, 1 is lowest, 9 is highest')"
+    >
+      <AInputNumber
+        v-model:value="performanceConfig.gzip_comp_level"
+        :min="1"
+        :max="9"
+        style="width: 120px"
+      />
+    </AFormItem>
+
+    <AFormItem
+      :label="$gettext('Client Max Body Size')"
+      :help="$gettext('Maximum client request body size')"
+    >
+      <SizeInput v-model="performanceConfig.client_max_body_size" />
+    </AFormItem>
+
+    <AFormItem
+      :label="$gettext('Server Names Hash Bucket Size')"
+      :help="$gettext('Server names hash table size')"
+    >
+      <SizeInput v-model="performanceConfig.server_names_hash_bucket_size" />
+    </AFormItem>
+
+    <AFormItem
+      :label="$gettext('Client Header Buffer Size')"
+      :help="$gettext('Client request header buffer size')"
+    >
+      <SizeInput v-model="performanceConfig.client_header_buffer_size" />
+    </AFormItem>
+    <!-- Client Body Buffer Size -->
+    <AFormItem
+      :label="$gettext('Client Body Buffer Size')"
+      :help="$gettext('Client request body buffer size')"
+    >
+      <SizeInput v-model="performanceConfig.client_body_buffer_size" />
+    </AFormItem>
+  </AForm>
+</template>

+ 449 - 0
app/src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue

@@ -0,0 +1,449 @@
+<script setup lang="ts">
+import type { ProxyCacheConfig } from '@/api/ngx'
+import { reactive } from 'vue'
+
+const value = defineModel<ProxyCacheConfig>({
+  default: reactive({
+    enabled: false,
+    path: '/var/cache/nginx/proxy_cache',
+    levels: '1:2',
+    use_temp_path: 'off',
+    keys_zone: 'proxy_cache:10m',
+    inactive: '60m',
+    max_size: '1g',
+    min_free: '',
+    manager_files: '',
+    manager_sleep: '',
+    manager_threshold: '',
+    loader_files: '',
+    loader_sleep: '',
+    loader_threshold: '',
+    purger: 'off',
+    purger_files: '',
+    purger_sleep: '',
+    purger_threshold: '',
+  }),
+})
+
+const timeUnitOptions = [
+  { value: 'ms', label: 'ms' },
+  { value: 's', label: 's' },
+  { value: 'm', label: 'm' },
+  { value: 'h', label: 'h' },
+  { value: 'd', label: 'd' },
+  { value: 'w', label: 'w' },
+  { value: 'M', label: 'M' },
+  { value: 'y', label: 'y' },
+]
+
+const sizeUnitOptions = [
+  { value: 'k', label: 'K' },
+  { value: 'm', label: 'M' },
+  { value: 'g', label: 'G' },
+]
+
+const timeValues = reactive({
+  inactive: { value: '60', unit: 'm' },
+  manager_sleep: { value: '', unit: 'ms' },
+  manager_threshold: { value: '', unit: 'ms' },
+  loader_sleep: { value: '', unit: 'ms' },
+  loader_threshold: { value: '', unit: 'ms' },
+  purger_sleep: { value: '', unit: 'ms' },
+  purger_threshold: { value: '', unit: 'ms' },
+})
+
+const sizeValues = reactive({
+  max_size: { value: '1', unit: 'g' },
+  min_free: { value: '', unit: 'm' },
+})
+
+function initTimeValues() {
+  const timeFields = ['inactive', 'manager_sleep', 'manager_threshold', 'loader_sleep', 'loader_threshold', 'purger_sleep', 'purger_threshold']
+
+  timeFields.forEach(field => {
+    const fieldValue = value.value[field]
+    if (fieldValue) {
+      const match = fieldValue.match(/^(\d+)([a-z]+)$/i)
+      if (match) {
+        timeValues[field].value = match[1]
+        timeValues[field].unit = match[2]
+      }
+    }
+  })
+}
+
+function initSizeValues() {
+  const sizeFields = ['max_size', 'min_free']
+
+  sizeFields.forEach(field => {
+    const fieldValue = value.value[field]
+    if (fieldValue) {
+      const match = fieldValue.match(/^(\d+)([kmg])$/i)
+      if (match) {
+        sizeValues[field].value = match[1]
+        sizeValues[field].unit = match[2].toLowerCase()
+      }
+    }
+  })
+}
+
+function updateTimeValue(field) {
+  if (timeValues[field].value) {
+    value.value[field] = `${timeValues[field].value}${timeValues[field].unit}`
+  }
+  else {
+    value.value[field] = ''
+  }
+}
+
+function updateSizeValue(field) {
+  if (sizeValues[field].value) {
+    value.value[field] = `${sizeValues[field].value}${sizeValues[field].unit}`
+  }
+  else {
+    value.value[field] = ''
+  }
+}
+
+initTimeValues()
+initSizeValues()
+</script>
+
+<template>
+  <AForm layout="vertical">
+    <AFormItem :label="$gettext('Enable Proxy Cache')" name="enabled">
+      <ASwitch v-model:checked="value.enabled" />
+    </AFormItem>
+
+    <div v-if="value.enabled" class="pt-4">
+      <ADivider>{{ $gettext('Basic Settings') }}</ADivider>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Cache Path')"
+            name="path"
+            required
+            :help="$gettext('Directory path to store cache files')"
+          >
+            <AInput v-model:value="value.path" placeholder="/var/cache/nginx/proxy_cache" />
+          </AFormItem>
+        </ACol>
+
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Directory Levels')"
+            name="levels"
+            :help="$gettext('Cache subdirectory levels structure, e.g. 1:2')"
+          >
+            <AInput v-model:value="value.levels" placeholder="1:2" />
+          </AFormItem>
+        </ACol>
+      </ARow>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Shared Memory Zone')"
+            name="keys_zone"
+            required
+            :help="$gettext('Define shared memory zone name and size, e.g. proxy_cache:10m')"
+          >
+            <AInput v-model:value="value.keys_zone" placeholder="proxy_cache:10m" />
+          </AFormItem>
+        </ACol>
+
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Use Temporary Path')"
+            name="use_temp_path"
+            :help="$gettext('Whether to use a temporary path when writing temporary files')"
+          >
+            <ASwitch
+              v-model:checked="value.use_temp_path"
+              :checked-children="$gettext('On')"
+              :un-checked-children="$gettext('Off')"
+              checked-value="on"
+              un-checked-value="off"
+            />
+          </AFormItem>
+        </ACol>
+      </ARow>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Inactive Time')"
+            name="inactive"
+            :help="$gettext('Cache items not accessed within this time will be removed')"
+          >
+            <AInputGroup compact>
+              <AInput
+                v-model:value="timeValues.inactive.value"
+                style="width: 65%"
+                placeholder="60"
+                @change="updateTimeValue('inactive')"
+              />
+              <ASelect
+                v-model:value="timeValues.inactive.unit"
+                style="width: 35%"
+                :options="timeUnitOptions"
+                @change="updateTimeValue('inactive')"
+              />
+            </AInputGroup>
+          </AFormItem>
+        </ACol>
+
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Maximum Cache Size')"
+            name="max_size"
+            :help="$gettext('Maximum total size of the cache')"
+          >
+            <AInputGroup compact>
+              <AInput
+                v-model:value="sizeValues.max_size.value"
+                style="width: 65%"
+                placeholder="1"
+                @change="updateSizeValue('max_size')"
+              />
+              <ASelect
+                v-model:value="sizeValues.max_size.unit"
+                style="width: 35%"
+                :options="sizeUnitOptions"
+                @change="updateSizeValue('max_size')"
+              />
+            </AInputGroup>
+          </AFormItem>
+        </ACol>
+      </ARow>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Minimum Free Space')"
+            name="min_free"
+            :help="$gettext('Minimum free space in the cache directory')"
+          >
+            <AInputGroup compact>
+              <AInput
+                v-model:value="sizeValues.min_free.value"
+                style="width: 65%"
+                placeholder="100"
+                @change="updateSizeValue('min_free')"
+              />
+              <ASelect
+                v-model:value="sizeValues.min_free.unit"
+                style="width: 35%"
+                :options="sizeUnitOptions"
+                @change="updateSizeValue('min_free')"
+              />
+            </AInputGroup>
+          </AFormItem>
+        </ACol>
+      </ARow>
+
+      <ADivider>{{ $gettext('Cache Manager Settings') }}</ADivider>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Manager Files')"
+            name="manager_files"
+            :help="$gettext('Number of files processed by cache manager at once')"
+          >
+            <AInput v-model:value="value.manager_files" placeholder="e.g. 100" />
+          </AFormItem>
+        </ACol>
+
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Manager Sleep')"
+            name="manager_sleep"
+            :help="$gettext('Sleep time between cache manager iterations')"
+          >
+            <AInputGroup compact>
+              <AInput
+                v-model:value="timeValues.manager_sleep.value"
+                style="width: 65%"
+                placeholder="50"
+                @change="updateTimeValue('manager_sleep')"
+              />
+              <ASelect
+                v-model:value="timeValues.manager_sleep.unit"
+                style="width: 35%"
+                :options="timeUnitOptions"
+                @change="updateTimeValue('manager_sleep')"
+              />
+            </AInputGroup>
+          </AFormItem>
+        </ACol>
+      </ARow>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Manager Threshold')"
+            name="manager_threshold"
+            :help="$gettext('Cache manager processing time threshold')"
+          >
+            <AInputGroup compact>
+              <AInput
+                v-model:value="timeValues.manager_threshold.value"
+                style="width: 65%"
+                placeholder="200"
+                @change="updateTimeValue('manager_threshold')"
+              />
+              <ASelect
+                v-model:value="timeValues.manager_threshold.unit"
+                style="width: 35%"
+                :options="timeUnitOptions"
+                @change="updateTimeValue('manager_threshold')"
+              />
+            </AInputGroup>
+          </AFormItem>
+        </ACol>
+      </ARow>
+
+      <ADivider>{{ $gettext('Loader Settings') }}</ADivider>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Loader Files')"
+            name="loader_files"
+            :help="$gettext('Number of files processed by cache loader at once')"
+          >
+            <AInput v-model:value="value.loader_files" placeholder="e.g. 100" />
+          </AFormItem>
+        </ACol>
+
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Loader Sleep')"
+            name="loader_sleep"
+            :help="$gettext('Sleep time between cache loader iterations')"
+          >
+            <AInputGroup compact>
+              <AInput
+                v-model:value="timeValues.loader_sleep.value"
+                style="width: 65%"
+                placeholder="50"
+                @change="updateTimeValue('loader_sleep')"
+              />
+              <ASelect
+                v-model:value="timeValues.loader_sleep.unit"
+                style="width: 35%"
+                :options="timeUnitOptions"
+                @change="updateTimeValue('loader_sleep')"
+              />
+            </AInputGroup>
+          </AFormItem>
+        </ACol>
+      </ARow>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Loader Threshold')"
+            name="loader_threshold"
+            :help="$gettext('Cache loader processing time threshold')"
+          >
+            <AInputGroup compact>
+              <AInput
+                v-model:value="timeValues.loader_threshold.value"
+                style="width: 65%"
+                placeholder="200"
+                @change="updateTimeValue('loader_threshold')"
+              />
+              <ASelect
+                v-model:value="timeValues.loader_threshold.unit"
+                style="width: 35%"
+                :options="timeUnitOptions"
+                @change="updateTimeValue('loader_threshold')"
+              />
+            </AInputGroup>
+          </AFormItem>
+        </ACol>
+      </ARow>
+
+      <!-- <ADivider>{{ $gettext('Purger Settings') }}</ADivider>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Enable Purger')"
+            name="purger"
+            :help="$gettext('Whether to enable the cache purger')"
+          >
+            <ASwitch
+              v-model:checked="value.purger"
+              :checked-children="$gettext('On')"
+              :un-checked-children="$gettext('Off')"
+              checked-value="on"
+              un-checked-value="off"
+            />
+          </AFormItem>
+        </ACol>
+
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Purger Files')"
+            name="purger_files"
+            :help="$gettext('Number of files processed by purger at once')"
+          >
+            <AInput v-model:value="value.purger_files" placeholder="e.g. 10" />
+          </AFormItem>
+        </ACol>
+      </ARow>
+
+      <ARow :gutter="16">
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Purger Sleep')"
+            name="purger_sleep"
+            :help="$gettext('Sleep time between purger iterations')"
+          >
+            <AInputGroup compact>
+              <AInput
+                v-model:value="timeValues.purger_sleep.value"
+                style="width: 65%"
+                placeholder="50"
+                @change="updateTimeValue('purger_sleep')"
+              />
+              <ASelect
+                v-model:value="timeValues.purger_sleep.unit"
+                style="width: 35%"
+                :options="timeUnitOptions"
+                @change="updateTimeValue('purger_sleep')"
+              />
+            </AInputGroup>
+          </AFormItem>
+        </ACol>
+
+        <ACol :span="12">
+          <AFormItem
+            :label="$gettext('Purger Threshold')"
+            name="purger_threshold"
+            :help="$gettext('Purger processing time threshold')"
+          >
+            <AInputGroup compact>
+              <AInput
+                v-model:value="timeValues.purger_threshold.value"
+                style="width: 65%"
+                placeholder="200"
+                @change="updateTimeValue('purger_threshold')"
+              />
+              <ASelect
+                v-model:value="timeValues.purger_threshold.unit"
+                style="width: 35%"
+                :options="timeUnitOptions"
+                @change="updateTimeValue('purger_threshold')"
+              />
+            </AInputGroup>
+          </AFormItem>
+        </ACol>
+      </ARow> -->
+    </div>
+  </AForm>
+</template>

+ 44 - 0
app/src/views/dashboard/components/ParamsOpt/SizeInput.vue

@@ -0,0 +1,44 @@
+<script setup lang="ts">
+const modelValue = defineModel<string>()
+
+const sizeUnitOptions = [
+  { value: 'k', label: 'K' },
+  { value: 'm', label: 'M' },
+  { value: 'g', label: 'G' },
+]
+
+const numberValue = ref<number>(0)
+const unitValue = ref<string>('m')
+
+watch(modelValue, val => {
+  if (!val) {
+    numberValue.value = 0
+    unitValue.value = 'm'
+    return
+  }
+  const match = val.match(/^(\d+)([kmg])$/)
+  if (match) {
+    numberValue.value = Number.parseInt(match[1])
+    unitValue.value = match[2]
+  }
+}, { immediate: true })
+
+watch(() => [numberValue.value, unitValue.value], () => {
+  modelValue.value = `${numberValue.value}${unitValue.value}`
+})
+</script>
+
+<template>
+  <AInputGroup compact>
+    <AInputNumber
+      v-model:value="numberValue"
+      :step="1"
+      class="w-30"
+    />
+    <ASelect v-model:value="unitValue" class="w-15">
+      <ASelectOption v-for="unit in sizeUnitOptions" :key="unit.value" :value="unit.value">
+        {{ unit.label }}
+      </ASelectOption>
+    </ASelect>
+  </AInputGroup>
+</template>

+ 53 - 0
app/src/views/dashboard/components/ParamsOpt/TimeInput.vue

@@ -0,0 +1,53 @@
+<script setup lang="ts">
+const modelValue = defineModel<string>()
+
+const timeUnitOptions = [
+  { value: 'ms', label: 'ms' },
+  { value: 's', label: 's' },
+  { value: 'm', label: 'm' },
+  { value: 'h', label: 'h' },
+  { value: 'd', label: 'd' },
+  { value: 'w', label: 'w' },
+  { value: 'M', label: 'M' },
+  { value: 'y', label: 'y' },
+]
+
+const numberValue = ref<number>(0)
+const unitValue = ref<string>('s')
+
+watch(modelValue, val => {
+  if (!val) {
+    numberValue.value = 0
+    unitValue.value = 's'
+    return
+  }
+  const match = val.match(/^(\d+)([msdhwMy])$/)
+  if (match) {
+    numberValue.value = Number.parseInt(match[1])
+    unitValue.value = match[2]
+  }
+}, { immediate: true })
+
+watch(() => [numberValue.value, unitValue.value], () => {
+  if (numberValue.value === 0) {
+    modelValue.value = ''
+    return
+  }
+  modelValue.value = `${numberValue.value}${unitValue.value}`
+})
+</script>
+
+<template>
+  <AInputGroup compact>
+    <AInputNumber
+      v-model:value="numberValue"
+      :step="1"
+      class="w-30"
+    />
+    <ASelect v-model:value="unitValue" class="w-15">
+      <ASelectOption v-for="unit in timeUnitOptions" :key="unit.value" :value="unit.value">
+        {{ unit.label }}
+      </ASelectOption>
+    </ASelect>
+  </AInputGroup>
+</template>

+ 130 - 0
app/src/views/dashboard/components/ParamsOptimization.vue

@@ -0,0 +1,130 @@
+<script setup lang="ts">
+import type { NginxConfigInfo, NginxPerfOpt } from '@/api/ngx'
+import ngx from '@/api/ngx'
+import {
+  SettingOutlined,
+} from '@ant-design/icons-vue'
+import { message } from 'ant-design-vue'
+import PerformanceConfig from './ParamsOpt/PerformanceConfig.vue'
+import ProxyCacheConfig from './ParamsOpt/ProxyCacheConfig.vue'
+// Performance settings modal
+const visible = ref(false)
+const loading = ref(false)
+const data = ref<NginxConfigInfo>({
+  worker_processes: '4',
+  worker_connections: 1024,
+  process_mode: 'manual',
+  keepalive_timeout: '65s',
+  gzip: 'off',
+  gzip_min_length: 1,
+  gzip_comp_level: 1,
+  client_max_body_size: '1m',
+  server_names_hash_bucket_size: '32k',
+  client_header_buffer_size: '1k',
+  client_body_buffer_size: '8k',
+  proxy_cache: {
+    enabled: false,
+    path: '/var/cache/nginx/proxy_cache',
+    levels: '1:2',
+    use_temp_path: 'off',
+    keys_zone: 'proxy_cache:10m',
+    inactive: '60m',
+    max_size: '1g',
+    min_free: '',
+    manager_files: '',
+    manager_sleep: '',
+    manager_threshold: '',
+    loader_files: '',
+    loader_sleep: '',
+    loader_threshold: '',
+    purger: 'off',
+    purger_files: '',
+    purger_sleep: '',
+    purger_threshold: '',
+  },
+})
+
+// Open modal and load performance settings
+async function openPerformanceModal() {
+  visible.value = true
+  await fetchPerformanceSettings()
+}
+
+// Load performance settings
+async function fetchPerformanceSettings() {
+  loading.value = true
+  try {
+    data.value = await ngx.get_performance()
+  }
+  catch (error) {
+    console.error('Failed to get Nginx performance settings:', error)
+    message.error($gettext('Failed to get Nginx performance settings'))
+  }
+  finally {
+    loading.value = false
+  }
+}
+
+// Save performance settings
+async function savePerformanceSettings() {
+  loading.value = true
+  try {
+    const params: NginxPerfOpt = {
+      worker_processes: data.value.process_mode === 'auto' ? 'auto' : data.value.worker_processes.toString(),
+      worker_connections: data.value.worker_connections.toString(),
+      keepalive_timeout: data.value.keepalive_timeout.toString(),
+      gzip: data.value.gzip,
+      gzip_min_length: data.value.gzip_min_length.toString(),
+      gzip_comp_level: data.value.gzip_comp_level.toString(),
+      client_max_body_size: data.value.client_max_body_size,
+      server_names_hash_bucket_size: data.value.server_names_hash_bucket_size.toString(),
+      client_header_buffer_size: data.value.client_header_buffer_size,
+      client_body_buffer_size: data.value.client_body_buffer_size,
+      proxy_cache: data.value.proxy_cache,
+    }
+    await ngx.update_performance(params)
+    message.success($gettext('Performance settings saved successfully'))
+  }
+  catch (error) {
+    console.error('Failed to save Nginx performance settings:', error)
+    message.error($gettext('Failed to save Nginx performance settings'))
+  }
+  finally {
+    loading.value = false
+  }
+}
+</script>
+
+<template>
+  <div>
+    <!-- Performance Optimization Button -->
+    <AButton
+      type="link"
+      size="small"
+      @click="openPerformanceModal"
+    >
+      <template #icon>
+        <SettingOutlined />
+      </template>
+      {{ $gettext('Params Optimization') }}
+    </AButton>
+
+    <!-- Performance Optimization Modal -->
+    <AModal
+      v-model:open="visible"
+      :title="$gettext('Params Optimization')"
+      :mask-closable="false"
+      :ok-button-props="{ loading }"
+      @ok="savePerformanceSettings"
+    >
+      <ATabs>
+        <ATabPane key="performance" :tab="$gettext('Performance')">
+          <PerformanceConfig v-model="data" />
+        </ATabPane>
+        <ATabPane key="cache" :tab="$gettext('Cache')">
+          <ProxyCacheConfig v-model="data.proxy_cache" />
+        </ATabPane>
+      </ATabs>
+    </AModal>
+  </div>
+</template>

+ 0 - 327
app/src/views/dashboard/components/PerformanceOptimization.vue

@@ -1,327 +0,0 @@
-<script setup lang="ts">
-import type { NginxConfigInfo, NginxPerfOpt } from '@/api/ngx'
-import type { CheckedType } from '@/types'
-import ngx from '@/api/ngx'
-import {
-  SettingOutlined,
-} from '@ant-design/icons-vue'
-import { message } from 'ant-design-vue'
-
-// Size units
-const sizeUnits = ['k', 'm', 'g']
-
-// Size values and units
-const maxBodySizeValue = ref<number>(1)
-const maxBodySizeUnit = ref<string>('m')
-const headerBufferSizeValue = ref<number>(1)
-const headerBufferSizeUnit = ref<string>('k')
-const bodyBufferSizeValue = ref<number>(8)
-const bodyBufferSizeUnit = ref<string>('k')
-
-// Performance settings modal
-const visible = ref(false)
-const loading = ref(false)
-const performanceConfig = ref<NginxConfigInfo>({
-  worker_processes: 1,
-  worker_connections: 1024,
-  process_mode: 'manual',
-  keepalive_timeout: 65,
-  gzip: 'off',
-  gzip_min_length: 1,
-  gzip_comp_level: 1,
-  client_max_body_size: '1m',
-  server_names_hash_bucket_size: 32,
-  client_header_buffer_size: '1k',
-  client_body_buffer_size: '8k',
-})
-
-// Open modal and load performance settings
-async function openPerformanceModal() {
-  visible.value = true
-  await fetchPerformanceSettings()
-}
-
-// Load performance settings
-async function fetchPerformanceSettings() {
-  loading.value = true
-  try {
-    const data = await ngx.get_performance()
-    performanceConfig.value = data
-
-    // Parse size values and units
-    parseSizeValues()
-  }
-  catch (error) {
-    console.error('Failed to get Nginx performance settings:', error)
-    message.error($gettext('Failed to get Nginx performance settings'))
-  }
-  finally {
-    loading.value = false
-  }
-}
-
-// Parse size values from config
-function parseSizeValues() {
-  // Parse client_max_body_size
-  const maxBodySize = performanceConfig.value.client_max_body_size
-  const maxBodyMatch = maxBodySize.match(/^(\d+)([kmg])?$/i)
-  if (maxBodyMatch) {
-    maxBodySizeValue.value = Number.parseInt(maxBodyMatch[1])
-    maxBodySizeUnit.value = (maxBodyMatch[2] || 'm').toLowerCase()
-  }
-
-  // Parse client_header_buffer_size
-  const headerSize = performanceConfig.value.client_header_buffer_size
-  const headerMatch = headerSize.match(/^(\d+)([kmg])?$/i)
-  if (headerMatch) {
-    headerBufferSizeValue.value = Number.parseInt(headerMatch[1])
-    headerBufferSizeUnit.value = (headerMatch[2] || 'k').toLowerCase()
-  }
-
-  // Parse client_body_buffer_size
-  const bodySize = performanceConfig.value.client_body_buffer_size
-  const bodyMatch = bodySize.match(/^(\d+)([kmg])?$/i)
-  if (bodyMatch) {
-    bodyBufferSizeValue.value = Number.parseInt(bodyMatch[1])
-    bodyBufferSizeUnit.value = (bodyMatch[2] || 'k').toLowerCase()
-  }
-}
-
-// Format size values before saving
-function formatSizeValues() {
-  performanceConfig.value.client_max_body_size = `${maxBodySizeValue.value}${maxBodySizeUnit.value}`
-  performanceConfig.value.client_header_buffer_size = `${headerBufferSizeValue.value}${headerBufferSizeUnit.value}`
-  performanceConfig.value.client_body_buffer_size = `${bodyBufferSizeValue.value}${bodyBufferSizeUnit.value}`
-}
-
-// Save performance settings
-async function savePerformanceSettings() {
-  loading.value = true
-  try {
-    // Format size values
-    formatSizeValues()
-
-    const params: NginxPerfOpt = {
-      worker_processes: performanceConfig.value.process_mode === 'auto' ? 'auto' : performanceConfig.value.worker_processes.toString(),
-      worker_connections: performanceConfig.value.worker_connections.toString(),
-      keepalive_timeout: performanceConfig.value.keepalive_timeout.toString(),
-      gzip: performanceConfig.value.gzip,
-      gzip_min_length: performanceConfig.value.gzip_min_length.toString(),
-      gzip_comp_level: performanceConfig.value.gzip_comp_level.toString(),
-      client_max_body_size: performanceConfig.value.client_max_body_size,
-      server_names_hash_bucket_size: performanceConfig.value.server_names_hash_bucket_size.toString(),
-      client_header_buffer_size: performanceConfig.value.client_header_buffer_size,
-      client_body_buffer_size: performanceConfig.value.client_body_buffer_size,
-    }
-    const data = await ngx.update_performance(params)
-    performanceConfig.value = data
-
-    // Parse the returned values
-    parseSizeValues()
-
-    message.success($gettext('Performance settings saved successfully'))
-  }
-  catch (error) {
-    console.error('Failed to save Nginx performance settings:', error)
-    message.error($gettext('Failed to save Nginx performance settings'))
-  }
-  finally {
-    loading.value = false
-  }
-}
-
-// Toggle worker process mode
-function handleProcessModeChange(checked: CheckedType) {
-  performanceConfig.value.process_mode = checked ? 'auto' : 'manual'
-  if (checked) {
-    performanceConfig.value.worker_processes = navigator.hardwareConcurrency || 4
-  }
-}
-
-// Toggle GZIP compression
-function handleGzipChange(checked: CheckedType) {
-  performanceConfig.value.gzip = checked ? 'on' : 'off'
-}
-</script>
-
-<template>
-  <div>
-    <!-- Performance Optimization Button -->
-    <AButton
-      type="link"
-      size="small"
-      @click="openPerformanceModal"
-    >
-      <template #icon>
-        <SettingOutlined />
-      </template>
-      {{ $gettext('Optimize Performance') }}
-    </AButton>
-
-    <!-- Performance Optimization Modal -->
-    <AModal
-      v-model:open="visible"
-      :title="$gettext('Optimize Nginx Performance')"
-      :mask-closable="false"
-      :ok-button-props="{ loading }"
-      @ok="savePerformanceSettings"
-    >
-      <ASpin :spinning="loading">
-        <AForm layout="vertical">
-          <AFormItem
-            :label="$gettext('Worker Processes')"
-            :help="$gettext('Number of concurrent worker processes, auto sets to CPU core count')"
-          >
-            <ASpace>
-              <ASwitch
-                :checked="performanceConfig.process_mode === 'auto'"
-                :checked-children="$gettext('Auto')"
-                :un-checked-children="$gettext('Manual')"
-                @change="handleProcessModeChange"
-              />
-              <AInputNumber
-                v-if="performanceConfig.process_mode !== 'auto'"
-                v-model:value="performanceConfig.worker_processes"
-                :min="1"
-                :max="32"
-                style="width: 120px"
-              />
-              <span v-else>{{ performanceConfig.worker_processes }} ({{ $gettext('Auto') }})</span>
-            </ASpace>
-          </AFormItem>
-
-          <AFormItem
-            :label="$gettext('Worker Connections')"
-            :help="$gettext('Maximum number of concurrent connections')"
-          >
-            <AInputNumber
-              v-model:value="performanceConfig.worker_connections"
-              :min="512"
-              :max="65536"
-              style="width: 120px"
-            />
-          </AFormItem>
-
-          <AFormItem
-            :label="$gettext('Keepalive Timeout')"
-            :help="$gettext('Connection timeout period')"
-          >
-            <ASpace>
-              <AInputNumber
-                v-model:value="performanceConfig.keepalive_timeout"
-                :min="0"
-                :max="999"
-                style="width: 120px"
-              />
-              <span>{{ $gettext('seconds') }}</span>
-            </ASpace>
-          </AFormItem>
-
-          <AFormItem
-            :label="$gettext('GZIP Compression')"
-            :help="$gettext('Enable compression for content transfer')"
-          >
-            <ASwitch
-              :checked="performanceConfig.gzip === 'on'"
-              :checked-children="$gettext('On')"
-              :un-checked-children="$gettext('Off')"
-              @change="handleGzipChange"
-            />
-          </AFormItem>
-
-          <AFormItem
-            :label="$gettext('GZIP Min Length')"
-            :help="$gettext('Minimum file size for compression')"
-          >
-            <ASpace>
-              <AInputNumber
-                v-model:value="performanceConfig.gzip_min_length"
-                :min="0"
-                style="width: 120px"
-              />
-              <span>{{ $gettext('KB') }}</span>
-            </ASpace>
-          </AFormItem>
-
-          <AFormItem
-            :label="$gettext('GZIP Compression Level')"
-            :help="$gettext('Compression level, 1 is lowest, 9 is highest')"
-          >
-            <AInputNumber
-              v-model:value="performanceConfig.gzip_comp_level"
-              :min="1"
-              :max="9"
-              style="width: 120px"
-            />
-          </AFormItem>
-
-          <AFormItem
-            :label="$gettext('Client Max Body Size')"
-            :help="$gettext('Maximum client request body size')"
-          >
-            <AInputGroup compact style="width: 180px">
-              <AInputNumber
-                v-model:value="maxBodySizeValue"
-                :min="1"
-                style="width: 120px"
-              />
-              <ASelect v-model:value="maxBodySizeUnit" style="width: 60px">
-                <ASelectOption v-for="unit in sizeUnits" :key="unit" :value="unit">
-                  {{ unit.toUpperCase() }}
-                </ASelectOption>
-              </ASelect>
-            </AInputGroup>
-          </AFormItem>
-
-          <AFormItem
-            :label="$gettext('Server Names Hash Bucket Size')"
-            :help="$gettext('Server names hash table size')"
-          >
-            <AInputNumber
-              v-model:value="performanceConfig.server_names_hash_bucket_size"
-              :min="32"
-              :step="32"
-              style="width: 120px"
-            />
-          </AFormItem>
-
-          <AFormItem
-            :label="$gettext('Client Header Buffer Size')"
-            :help="$gettext('Client request header buffer size')"
-          >
-            <AInputGroup compact style="width: 180px">
-              <AInputNumber
-                v-model:value="headerBufferSizeValue"
-                :min="1"
-                style="width: 120px"
-              />
-              <ASelect v-model:value="headerBufferSizeUnit" style="width: 60px">
-                <ASelectOption v-for="unit in sizeUnits" :key="unit" :value="unit">
-                  {{ unit.toUpperCase() }}
-                </ASelectOption>
-              </ASelect>
-            </AInputGroup>
-          </AFormItem>
-
-          <AFormItem
-            :label="$gettext('Client Body Buffer Size')"
-            :help="$gettext('Client request body buffer size')"
-          >
-            <AInputGroup compact style="width: 180px">
-              <AInputNumber
-                v-model:value="bodyBufferSizeValue"
-                :min="1"
-                style="width: 120px"
-              />
-              <ASelect v-model:value="bodyBufferSizeUnit" style="width: 60px">
-                <ASelectOption v-for="unit in sizeUnits" :key="unit" :value="unit">
-                  {{ unit.toUpperCase() }}
-                </ASelectOption>
-              </ASelect>
-            </AInputGroup>
-          </AFormItem>
-        </AForm>
-      </ASpin>
-    </AModal>
-  </div>
-</template>

+ 4 - 4
app/src/views/site/cert/Cert.vue

@@ -28,13 +28,13 @@ watch(() => props.certInfo, () => {
 function handleCertChange(certs: Cert[]) {
 function handleCertChange(certs: Cert[]) {
   changedCerts.value = certs
   changedCerts.value = certs
 
 
-  // 更新 NgxDirective
+  // Update NgxDirective
   if (current_server_directives.value) {
   if (current_server_directives.value) {
-    // 过滤掉现有的证书配置
+    // Filter out existing certificate configurations
     const filteredDirectives = current_server_directives.value
     const filteredDirectives = current_server_directives.value
       .filter(v => v.directive !== 'ssl_certificate' && v.directive !== 'ssl_certificate_key')
       .filter(v => v.directive !== 'ssl_certificate' && v.directive !== 'ssl_certificate_key')
 
 
-    // 添加新的证书配置
+    // Add new certificate configuration
     const newDirectives = [...filteredDirectives]
     const newDirectives = [...filteredDirectives]
 
 
     certs.forEach(cert => {
     certs.forEach(cert => {
@@ -48,7 +48,7 @@ function handleCertChange(certs: Cert[]) {
       })
       })
     })
     })
 
 
-    // 更新 directives
+    // Update directives
     current_server_directives.value = newDirectives
     current_server_directives.value = newDirectives
   }
   }
 }
 }

+ 2 - 1
app/uno.config.ts

@@ -56,7 +56,8 @@ export default defineConfig({
         // default
         // default
         /\.(vue|[jt]sx|ts)($|\?)/,
         /\.(vue|[jt]sx|ts)($|\?)/,
 
 
-        // 参考:https://unocss.dev/guide/extracting#extracting-from-build-tools-pipeline
+        // Use utility functions
+        // Reference: https://unocss.dev/guide/extracting#extracting-from-build-tools-pipeline
       ],
       ],
 
 
       // exclude files
       // exclude files

+ 0 - 135
internal/config/perf_opt.go

@@ -1,135 +0,0 @@
-package config
-
-import (
-	"os"
-	"sort"
-
-	"github.com/0xJacky/Nginx-UI/internal/nginx"
-	"github.com/pkg/errors"
-	"github.com/tufanbarisyildirim/gonginx/config"
-	"github.com/tufanbarisyildirim/gonginx/dumper"
-	"github.com/tufanbarisyildirim/gonginx/parser"
-)
-
-// PerfOpt represents Nginx performance optimization settings
-type PerfOpt struct {
-	WorkerProcesses           string `json:"worker_processes"`              // auto or number
-	WorkerConnections         string `json:"worker_connections"`            // max connections
-	KeepaliveTimeout          string `json:"keepalive_timeout"`             // timeout in seconds
-	Gzip                      string `json:"gzip"`                          // on or off
-	GzipMinLength             string `json:"gzip_min_length"`               // min length to compress
-	GzipCompLevel             string `json:"gzip_comp_level"`               // compression level
-	ClientMaxBodySize         string `json:"client_max_body_size"`          // max body size (with unit: k, m, g)
-	ServerNamesHashBucketSize string `json:"server_names_hash_bucket_size"` // hash bucket size
-	ClientHeaderBufferSize    string `json:"client_header_buffer_size"`     // header buffer size (with unit: k, m, g)
-	ClientBodyBufferSize      string `json:"client_body_buffer_size"`       // body buffer size (with unit: k, m, g)
-}
-
-// UpdatePerfOpt updates the Nginx performance optimization settings
-func UpdatePerfOpt(opt *PerfOpt) error {
-	confPath := nginx.GetConfPath("nginx.conf")
-	if confPath == "" {
-		return errors.New("failed to get nginx.conf path")
-	}
-
-	// Read the current configuration
-	content, err := os.ReadFile(confPath)
-	if err != nil {
-		return errors.Wrap(err, "failed to read nginx.conf")
-	}
-
-	// Parse the configuration
-	p := parser.NewStringParser(string(content), parser.WithSkipValidDirectivesErr())
-	conf, err := p.Parse()
-	if err != nil {
-		return errors.Wrap(err, "failed to parse nginx.conf")
-	}
-
-	// Process the configuration and update performance settings
-	updateNginxConfig(conf.Block, opt)
-
-	// Dump the updated configuration
-	updatedConf := dumper.DumpBlock(conf.Block, dumper.IndentedStyle)
-
-	return Save(confPath, updatedConf, nil)
-
-}
-
-// updateNginxConfig updates the performance settings in the Nginx configuration
-func updateNginxConfig(block config.IBlock, opt *PerfOpt) {
-	if block == nil {
-		return
-	}
-
-	directives := block.GetDirectives()
-	// Update main context directives
-	updateOrAddDirective(block, directives, "worker_processes", opt.WorkerProcesses)
-
-	// Look for events, http, and other blocks
-	for _, directive := range directives {
-		if directive.GetName() == "events" && directive.GetBlock() != nil {
-			// Update events block directives
-			eventsBlock := directive.GetBlock()
-			eventsDirectives := eventsBlock.GetDirectives()
-			updateOrAddDirective(eventsBlock, eventsDirectives, "worker_connections", opt.WorkerConnections)
-		} else if directive.GetName() == "http" && directive.GetBlock() != nil {
-			// Update http block directives
-			httpBlock := directive.GetBlock()
-			httpDirectives := httpBlock.GetDirectives()
-			updateOrAddDirective(httpBlock, httpDirectives, "keepalive_timeout", opt.KeepaliveTimeout)
-			updateOrAddDirective(httpBlock, httpDirectives, "gzip", opt.Gzip)
-			updateOrAddDirective(httpBlock, httpDirectives, "gzip_min_length", opt.GzipMinLength)
-			updateOrAddDirective(httpBlock, httpDirectives, "gzip_comp_level", opt.GzipCompLevel)
-			updateOrAddDirective(httpBlock, httpDirectives, "client_max_body_size", opt.ClientMaxBodySize)
-			updateOrAddDirective(httpBlock, httpDirectives, "server_names_hash_bucket_size", opt.ServerNamesHashBucketSize)
-			updateOrAddDirective(httpBlock, httpDirectives, "client_header_buffer_size", opt.ClientHeaderBufferSize)
-			updateOrAddDirective(httpBlock, httpDirectives, "client_body_buffer_size", opt.ClientBodyBufferSize)
-		}
-	}
-}
-
-// updateOrAddDirective updates a directive if it exists, or adds it to the block if it doesn't
-func updateOrAddDirective(block config.IBlock, directives []config.IDirective, name string, value string) {
-	if value == "" {
-		return
-	}
-
-	// Search for existing directive
-	for _, directive := range directives {
-		if directive.GetName() == name {
-			// Update existing directive
-			if len(directive.GetParameters()) > 0 {
-				directive.GetParameters()[0].Value = value
-			}
-			return
-		}
-	}
-
-	// If we get here, we need to add a new directive
-	// Create a new directive and add it to the block
-	// This requires knowledge of the underlying implementation
-	// For now, we'll use the Directive type from gonginx/config
-	newDirective := &config.Directive{
-		Name:       name,
-		Parameters: []config.Parameter{{Value: value}},
-	}
-
-	// Add the new directive to the block
-	// This is specific to the gonginx library implementation
-	switch block := block.(type) {
-	case *config.Config:
-		block.Block.Directives = append(block.Block.Directives, newDirective)
-	case *config.Block:
-		block.Directives = append(block.Directives, newDirective)
-	case *config.HTTP:
-		block.Directives = append(block.Directives, newDirective)
-	}
-}
-
-// sortDirectives sorts directives alphabetically by name
-func sortDirectives(directives []config.IDirective) {
-	sort.SliceStable(directives, func(i, j int) bool {
-		// Ensure both i and j can return valid names
-		return directives[i].GetName() < directives[j].GetName()
-	})
-}

+ 0 - 122
internal/nginx/config_info.go

@@ -1,122 +0,0 @@
-package nginx
-
-import (
-	"os"
-	"regexp"
-	"runtime"
-	"strconv"
-
-	"github.com/pkg/errors"
-)
-
-type NginxConfigInfo struct {
-	WorkerProcesses           int    `json:"worker_processes"`
-	WorkerConnections         int    `json:"worker_connections"`
-	ProcessMode               string `json:"process_mode"`
-	KeepaliveTimeout          int    `json:"keepalive_timeout"`
-	Gzip                      string `json:"gzip"`
-	GzipMinLength             int    `json:"gzip_min_length"`
-	GzipCompLevel             int    `json:"gzip_comp_level"`
-	ClientMaxBodySize         string `json:"client_max_body_size"` // with unit
-	ServerNamesHashBucketSize int    `json:"server_names_hash_bucket_size"`
-	ClientHeaderBufferSize    string `json:"client_header_buffer_size"` // with unit
-	ClientBodyBufferSize      string `json:"client_body_buffer_size"`   // with unit
-}
-
-// GetNginxWorkerConfigInfo Get Nginx config info of worker_processes and worker_connections
-func GetNginxWorkerConfigInfo() (*NginxConfigInfo, error) {
-	result := &NginxConfigInfo{
-		WorkerProcesses:           1,
-		WorkerConnections:         1024,
-		ProcessMode:               "manual",
-		KeepaliveTimeout:          65,
-		Gzip:                      "off",
-		GzipMinLength:             1,
-		GzipCompLevel:             1,
-		ClientMaxBodySize:         "1m",
-		ServerNamesHashBucketSize: 32,
-		ClientHeaderBufferSize:    "1k",
-		ClientBodyBufferSize:      "8k",
-	}
-
-	confPath := GetConfPath("nginx.conf")
-	if confPath == "" {
-		return nil, errors.New("failed to get nginx.conf path")
-	}
-
-	// Read the current configuration
-	content, err := os.ReadFile(confPath)
-	if err != nil {
-		return nil, errors.Wrap(err, "failed to read nginx.conf")
-	}
-
-	outputStr := string(content)
-
-	// Parse worker_processes
-	wpRe := regexp.MustCompile(`worker_processes\s+(\d+|auto);`)
-	if matches := wpRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		if matches[1] == "auto" {
-			result.WorkerProcesses = runtime.NumCPU()
-			result.ProcessMode = "auto"
-		} else {
-			result.WorkerProcesses, _ = strconv.Atoi(matches[1])
-			result.ProcessMode = "manual"
-		}
-	}
-
-	// Parse worker_connections
-	wcRe := regexp.MustCompile(`worker_connections\s+(\d+);`)
-	if matches := wcRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		result.WorkerConnections, _ = strconv.Atoi(matches[1])
-	}
-
-	// Parse keepalive_timeout
-	ktRe := regexp.MustCompile(`keepalive_timeout\s+(\d+);`)
-	if matches := ktRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		result.KeepaliveTimeout, _ = strconv.Atoi(matches[1])
-	}
-
-	// Parse gzip
-	gzipRe := regexp.MustCompile(`gzip\s+(on|off);`)
-	if matches := gzipRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		result.Gzip = matches[1]
-	}
-
-	// Parse gzip_min_length
-	gzipMinRe := regexp.MustCompile(`gzip_min_length\s+(\d+);`)
-	if matches := gzipMinRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		result.GzipMinLength, _ = strconv.Atoi(matches[1])
-	}
-
-	// Parse gzip_comp_level
-	gzipCompRe := regexp.MustCompile(`gzip_comp_level\s+(\d+);`)
-	if matches := gzipCompRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		result.GzipCompLevel, _ = strconv.Atoi(matches[1])
-	}
-
-	// Parse client_max_body_size with any unit (k, m, g)
-	cmaxRe := regexp.MustCompile(`client_max_body_size\s+(\d+[kmg]?);`)
-	if matches := cmaxRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		result.ClientMaxBodySize = matches[1]
-	}
-
-	// Parse server_names_hash_bucket_size
-	hashRe := regexp.MustCompile(`server_names_hash_bucket_size\s+(\d+);`)
-	if matches := hashRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		result.ServerNamesHashBucketSize, _ = strconv.Atoi(matches[1])
-	}
-
-	// Parse client_header_buffer_size with any unit (k, m, g)
-	headerRe := regexp.MustCompile(`client_header_buffer_size\s+(\d+[kmg]?);`)
-	if matches := headerRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		result.ClientHeaderBufferSize = matches[1]
-	}
-
-	// Parse client_body_buffer_size with any unit (k, m, g)
-	bodyRe := regexp.MustCompile(`client_body_buffer_size\s+(\d+[kmg]?);`)
-	if matches := bodyRe.FindStringSubmatch(outputStr); len(matches) > 1 {
-		result.ClientBodyBufferSize = matches[1]
-	}
-
-	return result, nil
-}

+ 246 - 0
internal/performance/config_info.go

@@ -0,0 +1,246 @@
+package performance
+
+import (
+	"os"
+	"regexp"
+	"runtime"
+	"strconv"
+
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/pkg/errors"
+)
+
+type NginxConfigInfo struct {
+	WorkerProcesses           int              `json:"worker_processes"`
+	WorkerConnections         int              `json:"worker_connections"`
+	ProcessMode               string           `json:"process_mode"`
+	KeepaliveTimeout          string           `json:"keepalive_timeout"`
+	Gzip                      string           `json:"gzip"`
+	GzipMinLength             int              `json:"gzip_min_length"`
+	GzipCompLevel             int              `json:"gzip_comp_level"`
+	ClientMaxBodySize         string           `json:"client_max_body_size"` // with unit
+	ServerNamesHashBucketSize string           `json:"server_names_hash_bucket_size"`
+	ClientHeaderBufferSize    string           `json:"client_header_buffer_size"` // with unit
+	ClientBodyBufferSize      string           `json:"client_body_buffer_size"`   // with unit
+	ProxyCache                ProxyCacheConfig `json:"proxy_cache"`
+}
+
+// GetNginxWorkerConfigInfo Get Nginx config info of worker_processes and worker_connections
+func GetNginxWorkerConfigInfo() (*NginxConfigInfo, error) {
+	result := &NginxConfigInfo{
+		WorkerProcesses:           1,
+		WorkerConnections:         1024,
+		ProcessMode:               "manual",
+		KeepaliveTimeout:          "65s",
+		Gzip:                      "off",
+		GzipMinLength:             1,
+		GzipCompLevel:             1,
+		ClientMaxBodySize:         "1m",
+		ServerNamesHashBucketSize: "32k",
+		ClientHeaderBufferSize:    "1k",
+		ClientBodyBufferSize:      "8k",
+		ProxyCache: ProxyCacheConfig{
+			Enabled:     false,
+			Path:        "/var/cache/nginx/proxy_cache",
+			Levels:      "1:2",
+			UseTempPath: "off",
+			KeysZone:    "proxy_cache:10m",
+			Inactive:    "60m",
+			MaxSize:     "1g",
+			// Purger:      "off",
+		},
+	}
+
+	confPath := nginx.GetConfPath("nginx.conf")
+	if confPath == "" {
+		return nil, errors.New("failed to get nginx.conf path")
+	}
+
+	// Read the current configuration
+	content, err := os.ReadFile(confPath)
+	if err != nil {
+		return nil, errors.Wrap(err, "failed to read nginx.conf")
+	}
+
+	outputStr := string(content)
+
+	// Parse worker_processes
+	wpRe := regexp.MustCompile(`worker_processes\s+(\d+|auto);`)
+	if matches := wpRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		if matches[1] == "auto" {
+			result.WorkerProcesses = runtime.NumCPU()
+			result.ProcessMode = "auto"
+		} else {
+			result.WorkerProcesses, _ = strconv.Atoi(matches[1])
+			result.ProcessMode = "manual"
+		}
+	}
+
+	// Parse worker_connections
+	wcRe := regexp.MustCompile(`worker_connections\s+(\d+);`)
+	if matches := wcRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.WorkerConnections, _ = strconv.Atoi(matches[1])
+	}
+
+	// Parse keepalive_timeout
+	ktRe := regexp.MustCompile(`keepalive_timeout\s+(\d+[smhdwMy]?);`)
+	if matches := ktRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.KeepaliveTimeout = matches[1]
+	}
+
+	// Parse gzip
+	gzipRe := regexp.MustCompile(`gzip\s+(on|off);`)
+	if matches := gzipRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.Gzip = matches[1]
+	}
+
+	// Parse gzip_min_length
+	gzipMinRe := regexp.MustCompile(`gzip_min_length\s+(\d+);`)
+	if matches := gzipMinRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.GzipMinLength, _ = strconv.Atoi(matches[1])
+	}
+
+	// Parse gzip_comp_level
+	gzipCompRe := regexp.MustCompile(`gzip_comp_level\s+(\d+);`)
+	if matches := gzipCompRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.GzipCompLevel, _ = strconv.Atoi(matches[1])
+	}
+
+	// Parse client_max_body_size with any unit (k, m, g)
+	cmaxRe := regexp.MustCompile(`client_max_body_size\s+(\d+[kmg]?);`)
+	if matches := cmaxRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.ClientMaxBodySize = matches[1]
+	}
+
+	// Parse server_names_hash_bucket_size
+	hashRe := regexp.MustCompile(`server_names_hash_bucket_size\s+(\d+[kmg]?);`)
+	if matches := hashRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.ServerNamesHashBucketSize = matches[1]
+	}
+
+	// Parse client_header_buffer_size with any unit (k, m, g)
+	headerRe := regexp.MustCompile(`client_header_buffer_size\s+(\d+[kmg]?);`)
+	if matches := headerRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.ClientHeaderBufferSize = matches[1]
+	}
+
+	// Parse client_body_buffer_size with any unit (k, m, g)
+	bodyRe := regexp.MustCompile(`client_body_buffer_size\s+(\d+[kmg]?);`)
+	if matches := bodyRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.ClientBodyBufferSize = matches[1]
+	}
+
+	// Parse proxy_cache_path settings
+	proxyCachePathRe := regexp.MustCompile(`proxy_cache_path\s+([^;]+);`)
+	if matches := proxyCachePathRe.FindStringSubmatch(outputStr); len(matches) > 1 {
+		result.ProxyCache.Enabled = true
+		proxyCacheParams := matches[1]
+
+		// Extract path (first parameter)
+		pathRe := regexp.MustCompile(`^\s*([^\s]+)`)
+		if pathMatches := pathRe.FindStringSubmatch(proxyCacheParams); len(pathMatches) > 1 {
+			result.ProxyCache.Path = pathMatches[1]
+		}
+
+		// Extract levels parameter
+		levelsRe := regexp.MustCompile(`levels=([^\s]+)`)
+		if levelsMatches := levelsRe.FindStringSubmatch(proxyCacheParams); len(levelsMatches) > 1 {
+			result.ProxyCache.Levels = levelsMatches[1]
+		}
+
+		// Extract use_temp_path parameter
+		useTempPathRe := regexp.MustCompile(`use_temp_path=(on|off)`)
+		if useTempPathMatches := useTempPathRe.FindStringSubmatch(proxyCacheParams); len(useTempPathMatches) > 1 {
+			result.ProxyCache.UseTempPath = useTempPathMatches[1]
+		}
+
+		// Extract keys_zone parameter
+		keysZoneRe := regexp.MustCompile(`keys_zone=([^\s]+)`)
+		if keysZoneMatches := keysZoneRe.FindStringSubmatch(proxyCacheParams); len(keysZoneMatches) > 1 {
+			result.ProxyCache.KeysZone = keysZoneMatches[1]
+		}
+
+		// Extract inactive parameter
+		inactiveRe := regexp.MustCompile(`inactive=([^\s]+)`)
+		if inactiveMatches := inactiveRe.FindStringSubmatch(proxyCacheParams); len(inactiveMatches) > 1 {
+			result.ProxyCache.Inactive = inactiveMatches[1]
+		}
+
+		// Extract max_size parameter
+		maxSizeRe := regexp.MustCompile(`max_size=([^\s]+)`)
+		if maxSizeMatches := maxSizeRe.FindStringSubmatch(proxyCacheParams); len(maxSizeMatches) > 1 {
+			result.ProxyCache.MaxSize = maxSizeMatches[1]
+		}
+
+		// Extract min_free parameter
+		minFreeRe := regexp.MustCompile(`min_free=([^\s]+)`)
+		if minFreeMatches := minFreeRe.FindStringSubmatch(proxyCacheParams); len(minFreeMatches) > 1 {
+			result.ProxyCache.MinFree = minFreeMatches[1]
+		}
+
+		// Extract manager_files parameter
+		managerFilesRe := regexp.MustCompile(`manager_files=([^\s]+)`)
+		if managerFilesMatches := managerFilesRe.FindStringSubmatch(proxyCacheParams); len(managerFilesMatches) > 1 {
+			result.ProxyCache.ManagerFiles = managerFilesMatches[1]
+		}
+
+		// Extract manager_sleep parameter
+		managerSleepRe := regexp.MustCompile(`manager_sleep=([^\s]+)`)
+		if managerSleepMatches := managerSleepRe.FindStringSubmatch(proxyCacheParams); len(managerSleepMatches) > 1 {
+			result.ProxyCache.ManagerSleep = managerSleepMatches[1]
+		}
+
+		// Extract manager_threshold parameter
+		managerThresholdRe := regexp.MustCompile(`manager_threshold=([^\s]+)`)
+		if managerThresholdMatches := managerThresholdRe.FindStringSubmatch(proxyCacheParams); len(managerThresholdMatches) > 1 {
+			result.ProxyCache.ManagerThreshold = managerThresholdMatches[1]
+		}
+
+		// Extract loader_files parameter
+		loaderFilesRe := regexp.MustCompile(`loader_files=([^\s]+)`)
+		if loaderFilesMatches := loaderFilesRe.FindStringSubmatch(proxyCacheParams); len(loaderFilesMatches) > 1 {
+			result.ProxyCache.LoaderFiles = loaderFilesMatches[1]
+		}
+
+		// Extract loader_sleep parameter
+		loaderSleepRe := regexp.MustCompile(`loader_sleep=([^\s]+)`)
+		if loaderSleepMatches := loaderSleepRe.FindStringSubmatch(proxyCacheParams); len(loaderSleepMatches) > 1 {
+			result.ProxyCache.LoaderSleep = loaderSleepMatches[1]
+		}
+
+		// Extract loader_threshold parameter
+		loaderThresholdRe := regexp.MustCompile(`loader_threshold=([^\s]+)`)
+		if loaderThresholdMatches := loaderThresholdRe.FindStringSubmatch(proxyCacheParams); len(loaderThresholdMatches) > 1 {
+			result.ProxyCache.LoaderThreshold = loaderThresholdMatches[1]
+		}
+
+		// Extract purger parameter
+		// purgerRe := regexp.MustCompile(`purger=(on|off)`)
+		// if purgerMatches := purgerRe.FindStringSubmatch(proxyCacheParams); len(purgerMatches) > 1 {
+		// 	result.ProxyCache.Purger = purgerMatches[1]
+		// }
+
+		// // Extract purger_files parameter
+		// purgerFilesRe := regexp.MustCompile(`purger_files=([^\s]+)`)
+		// if purgerFilesMatches := purgerFilesRe.FindStringSubmatch(proxyCacheParams); len(purgerFilesMatches) > 1 {
+		// 	result.ProxyCache.PurgerFiles = purgerFilesMatches[1]
+		// }
+
+		// // Extract purger_sleep parameter
+		// purgerSleepRe := regexp.MustCompile(`purger_sleep=([^\s]+)`)
+		// if purgerSleepMatches := purgerSleepRe.FindStringSubmatch(proxyCacheParams); len(purgerSleepMatches) > 1 {
+		// 	result.ProxyCache.PurgerSleep = purgerSleepMatches[1]
+		// }
+
+		// // Extract purger_threshold parameter
+		// purgerThresholdRe := regexp.MustCompile(`purger_threshold=([^\s]+)`)
+		// if purgerThresholdMatches := purgerThresholdRe.FindStringSubmatch(proxyCacheParams); len(purgerThresholdMatches) > 1 {
+		// 	result.ProxyCache.PurgerThreshold = purgerThresholdMatches[1]
+		// }
+	} else {
+		// No proxy_cache_path directive found, so disable it
+		result.ProxyCache.Enabled = false
+	}
+
+	return result, nil
+}

+ 289 - 0
internal/performance/perf_opt.go

@@ -0,0 +1,289 @@
+package performance
+
+import (
+	"os"
+	"sort"
+
+	ngxConfig "github.com/0xJacky/Nginx-UI/internal/config"
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/pkg/errors"
+	"github.com/tufanbarisyildirim/gonginx/config"
+	"github.com/tufanbarisyildirim/gonginx/dumper"
+	"github.com/tufanbarisyildirim/gonginx/parser"
+)
+
+type ProxyCacheConfig struct {
+	Enabled          bool   `json:"enabled"`
+	Path             string `json:"path"`              // Cache file path
+	Levels           string `json:"levels"`            // Cache directory levels
+	UseTempPath      string `json:"use_temp_path"`     // Use temporary path (on/off)
+	KeysZone         string `json:"keys_zone"`         // Shared memory zone name and size
+	Inactive         string `json:"inactive"`          // Time after which inactive cache is removed
+	MaxSize          string `json:"max_size"`          // Maximum size of cache
+	MinFree          string `json:"min_free"`          // Minimum free space
+	ManagerFiles     string `json:"manager_files"`     // Number of files processed by manager
+	ManagerSleep     string `json:"manager_sleep"`     // Manager check interval
+	ManagerThreshold string `json:"manager_threshold"` // Manager processing threshold
+	LoaderFiles      string `json:"loader_files"`      // Number of files loaded at once
+	LoaderSleep      string `json:"loader_sleep"`      // Loader check interval
+	LoaderThreshold  string `json:"loader_threshold"`  // Loader processing threshold
+
+	// Additionally, the following parameters are available as part of nginx commercial subscription:
+	// Purger           string `json:"purger"`            // Enable cache purger (on/off)
+	// PurgerFiles      string `json:"purger_files"`      // Number of files processed by purger
+	// PurgerSleep      string `json:"purger_sleep"`      // Purger check interval
+	// PurgerThreshold  string `json:"purger_threshold"`  // Purger processing threshold
+}
+
+// PerfOpt represents Nginx performance optimization settings
+type PerfOpt struct {
+	WorkerProcesses           string           `json:"worker_processes"`              // auto or number
+	WorkerConnections         string           `json:"worker_connections"`            // max connections
+	KeepaliveTimeout          string           `json:"keepalive_timeout"`             // timeout in seconds
+	Gzip                      string           `json:"gzip"`                          // on or off
+	GzipMinLength             string           `json:"gzip_min_length"`               // min length to compress
+	GzipCompLevel             string           `json:"gzip_comp_level"`               // compression level
+	ClientMaxBodySize         string           `json:"client_max_body_size"`          // max body size (with unit: k, m, g)
+	ServerNamesHashBucketSize string           `json:"server_names_hash_bucket_size"` // hash bucket size
+	ClientHeaderBufferSize    string           `json:"client_header_buffer_size"`     // header buffer size (with unit: k, m, g)
+	ClientBodyBufferSize      string           `json:"client_body_buffer_size"`       // body buffer size (with unit: k, m, g)
+	ProxyCache                ProxyCacheConfig `json:"proxy_cache,omitzero"`          // proxy cache settings
+}
+
+// UpdatePerfOpt updates the Nginx performance optimization settings
+func UpdatePerfOpt(opt *PerfOpt) error {
+	confPath := nginx.GetConfPath("nginx.conf")
+	if confPath == "" {
+		return errors.New("failed to get nginx.conf path")
+	}
+
+	// Read the current configuration
+	content, err := os.ReadFile(confPath)
+	if err != nil {
+		return errors.Wrap(err, "failed to read nginx.conf")
+	}
+
+	// Parse the configuration
+	p := parser.NewStringParser(string(content), parser.WithSkipValidDirectivesErr())
+	conf, err := p.Parse()
+	if err != nil {
+		return errors.Wrap(err, "failed to parse nginx.conf")
+	}
+
+	// Process the configuration and update performance settings
+	updateNginxConfig(conf.Block, opt)
+
+	// Dump the updated configuration
+	updatedConf := dumper.DumpBlock(conf.Block, dumper.IndentedStyle)
+
+	return ngxConfig.Save(confPath, updatedConf, nil)
+
+}
+
+// updateNginxConfig updates the performance settings in the Nginx configuration
+func updateNginxConfig(block config.IBlock, opt *PerfOpt) {
+	if block == nil {
+		return
+	}
+
+	directives := block.GetDirectives()
+	// Update main context directives
+	updateOrAddDirective(block, directives, "worker_processes", opt.WorkerProcesses)
+
+	// Look for events, http, and other blocks
+	for _, directive := range directives {
+		if directive.GetName() == "events" && directive.GetBlock() != nil {
+			// Update events block directives
+			eventsBlock := directive.GetBlock()
+			eventsDirectives := eventsBlock.GetDirectives()
+			updateOrAddDirective(eventsBlock, eventsDirectives, "worker_connections", opt.WorkerConnections)
+		} else if directive.GetName() == "http" && directive.GetBlock() != nil {
+			// Update http block directives
+			httpBlock := directive.GetBlock()
+			httpDirectives := httpBlock.GetDirectives()
+			updateOrAddDirective(httpBlock, httpDirectives, "keepalive_timeout", opt.KeepaliveTimeout)
+			updateOrAddDirective(httpBlock, httpDirectives, "gzip", opt.Gzip)
+			updateOrAddDirective(httpBlock, httpDirectives, "gzip_min_length", opt.GzipMinLength)
+			updateOrAddDirective(httpBlock, httpDirectives, "gzip_comp_level", opt.GzipCompLevel)
+			updateOrAddDirective(httpBlock, httpDirectives, "client_max_body_size", opt.ClientMaxBodySize)
+			updateOrAddDirective(httpBlock, httpDirectives, "server_names_hash_bucket_size", opt.ServerNamesHashBucketSize)
+			updateOrAddDirective(httpBlock, httpDirectives, "client_header_buffer_size", opt.ClientHeaderBufferSize)
+			updateOrAddDirective(httpBlock, httpDirectives, "client_body_buffer_size", opt.ClientBodyBufferSize)
+
+			// Handle proxy_cache_path directive
+			updateOrRemoveProxyCachePath(httpBlock, httpDirectives, &opt.ProxyCache)
+
+			sortDirectives(httpDirectives)
+		}
+	}
+}
+
+// updateOrAddDirective updates a directive if it exists, or adds it to the block if it doesn't
+func updateOrAddDirective(block config.IBlock, directives []config.IDirective, name string, value string) {
+	if value == "" {
+		return
+	}
+
+	// Search for existing directive
+	for _, directive := range directives {
+		if directive.GetName() == name {
+			// Update existing directive
+			if len(directive.GetParameters()) > 0 {
+				directive.GetParameters()[0].Value = value
+			}
+			return
+		}
+	}
+
+	// If we get here, we need to add a new directive
+	// Create a new directive and add it to the block
+	// This requires knowledge of the underlying implementation
+	// For now, we'll use the Directive type from gonginx/config
+	newDirective := &config.Directive{
+		Name:       name,
+		Parameters: []config.Parameter{{Value: value}},
+	}
+
+	// Add the new directive to the block
+	// This is specific to the gonginx library implementation
+	switch block := block.(type) {
+	case *config.Config:
+		block.Block.Directives = append(block.Block.Directives, newDirective)
+	case *config.Block:
+		block.Directives = append(block.Directives, newDirective)
+	case *config.HTTP:
+		block.Directives = append(block.Directives, newDirective)
+	}
+}
+
+// sortDirectives sorts directives alphabetically by name
+func sortDirectives(directives []config.IDirective) {
+	sort.SliceStable(directives, func(i, j int) bool {
+		// Ensure both i and j can return valid names
+		return directives[i].GetName() < directives[j].GetName()
+	})
+}
+
+// updateOrRemoveProxyCachePath adds or removes the proxy_cache_path directive based on whether it's enabled
+func updateOrRemoveProxyCachePath(block config.IBlock, directives []config.IDirective, proxyCache *ProxyCacheConfig) {
+	// If not enabled, remove the directive if it exists
+	if !proxyCache.Enabled {
+		for i, directive := range directives {
+			if directive.GetName() == "proxy_cache_path" {
+				// Remove the directive
+				switch block := block.(type) {
+				case *config.Block:
+					block.Directives = append(block.Directives[:i], block.Directives[i+1:]...)
+				case *config.HTTP:
+					block.Directives = append(block.Directives[:i], block.Directives[i+1:]...)
+				}
+				return
+			}
+		}
+		return
+	}
+
+	// If enabled, build the proxy_cache_path directive with all parameters
+	params := []config.Parameter{}
+
+	// First parameter is the path (required)
+	if proxyCache.Path != "" {
+		params = append(params, config.Parameter{Value: proxyCache.Path})
+		_ = os.MkdirAll(proxyCache.Path, 0755)
+	} else {
+		// No path specified, can't add the directive
+		return
+	}
+
+	// Add optional parameters
+	if proxyCache.Levels != "" {
+		params = append(params, config.Parameter{Value: "levels=" + proxyCache.Levels})
+	}
+
+	if proxyCache.UseTempPath != "" {
+		params = append(params, config.Parameter{Value: "use_temp_path=" + proxyCache.UseTempPath})
+	}
+
+	if proxyCache.KeysZone != "" {
+		params = append(params, config.Parameter{Value: "keys_zone=" + proxyCache.KeysZone})
+	} else {
+		// keys_zone is required, can't add the directive without it
+		return
+	}
+
+	if proxyCache.Inactive != "" {
+		params = append(params, config.Parameter{Value: "inactive=" + proxyCache.Inactive})
+	}
+
+	if proxyCache.MaxSize != "" {
+		params = append(params, config.Parameter{Value: "max_size=" + proxyCache.MaxSize})
+	}
+
+	if proxyCache.MinFree != "" {
+		params = append(params, config.Parameter{Value: "min_free=" + proxyCache.MinFree})
+	}
+
+	if proxyCache.ManagerFiles != "" {
+		params = append(params, config.Parameter{Value: "manager_files=" + proxyCache.ManagerFiles})
+	}
+
+	if proxyCache.ManagerSleep != "" {
+		params = append(params, config.Parameter{Value: "manager_sleep=" + proxyCache.ManagerSleep})
+	}
+
+	if proxyCache.ManagerThreshold != "" {
+		params = append(params, config.Parameter{Value: "manager_threshold=" + proxyCache.ManagerThreshold})
+	}
+
+	if proxyCache.LoaderFiles != "" {
+		params = append(params, config.Parameter{Value: "loader_files=" + proxyCache.LoaderFiles})
+	}
+
+	if proxyCache.LoaderSleep != "" {
+		params = append(params, config.Parameter{Value: "loader_sleep=" + proxyCache.LoaderSleep})
+	}
+
+	if proxyCache.LoaderThreshold != "" {
+		params = append(params, config.Parameter{Value: "loader_threshold=" + proxyCache.LoaderThreshold})
+	}
+
+	// if proxyCache.Purger != "" {
+	// 	params = append(params, config.Parameter{Value: "purger=" + proxyCache.Purger})
+	// }
+
+	// if proxyCache.PurgerFiles != "" {
+	// 	params = append(params, config.Parameter{Value: "purger_files=" + proxyCache.PurgerFiles})
+	// }
+
+	// if proxyCache.PurgerSleep != "" {
+	// 	params = append(params, config.Parameter{Value: "purger_sleep=" + proxyCache.PurgerSleep})
+	// }
+
+	// if proxyCache.PurgerThreshold != "" {
+	// 	params = append(params, config.Parameter{Value: "purger_threshold=" + proxyCache.PurgerThreshold})
+	// }
+
+	// Check if directive already exists
+	for i, directive := range directives {
+		if directive.GetName() == "proxy_cache_path" {
+			// Remove the old directive
+			switch block := block.(type) {
+			case *config.HTTP:
+				block.Directives = append(block.Directives[:i], block.Directives[i+1:]...)
+			}
+			break
+		}
+	}
+
+	// Create new directive
+	newDirective := &config.Directive{
+		Name:       "proxy_cache_path",
+		Parameters: params,
+	}
+
+	// Add the directive to the block
+	switch block := block.(type) {
+	case *config.HTTP:
+		block.Directives = append(block.Directives, newDirective)
+	}
+}

+ 6 - 3
internal/nginx/performance.go → internal/performance/performance.go

@@ -1,6 +1,9 @@
-package nginx
+package performance
 
 
-import "github.com/uozi-tech/cosy/logger"
+import (
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/uozi-tech/cosy/logger"
+)
 
 
 type NginxPerformanceInfo struct {
 type NginxPerformanceInfo struct {
 	StubStatusData
 	StubStatusData
@@ -16,7 +19,7 @@ type NginxPerformanceResponse struct {
 
 
 func GetPerformanceData() NginxPerformanceResponse {
 func GetPerformanceData() NginxPerformanceResponse {
 	// Check if Nginx is running
 	// Check if Nginx is running
-	running := IsNginxRunning()
+	running := nginx.IsNginxRunning()
 	if !running {
 	if !running {
 		return NginxPerformanceResponse{
 		return NginxPerformanceResponse{
 			StubStatusEnabled: false,
 			StubStatusEnabled: false,

+ 1 - 1
internal/nginx/process_info.go → internal/performance/process_info.go

@@ -1,4 +1,4 @@
-package nginx
+package performance
 
 
 import (
 import (
 	"fmt"
 	"fmt"

+ 7 - 6
internal/nginx/stub_status.go → internal/performance/stub_status.go

@@ -1,4 +1,4 @@
-package nginx
+package performance
 
 
 import (
 import (
 	"bytes"
 	"bytes"
@@ -12,6 +12,7 @@ import (
 	"text/template"
 	"text/template"
 	"time"
 	"time"
 
 
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
 	"github.com/0xJacky/Nginx-UI/settings"
 	"github.com/0xJacky/Nginx-UI/settings"
 	"github.com/pkg/errors"
 	"github.com/pkg/errors"
 	"github.com/uozi-tech/cosy/logger"
 	"github.com/uozi-tech/cosy/logger"
@@ -119,12 +120,12 @@ func GetStubStatus() *StubStatusInfo {
 // IsStubStatusEnabled Check if the stub_status module is enabled and return the access address
 // IsStubStatusEnabled Check if the stub_status module is enabled and return the access address
 // Only check the stub_status_nginx-ui.conf configuration file
 // Only check the stub_status_nginx-ui.conf configuration file
 func IsStubStatusEnabled() (bool, string) {
 func IsStubStatusEnabled() (bool, string) {
-	stubStatusConfPath := GetConfPath("conf.d", StubStatusConfigName)
+	stubStatusConfPath := nginx.GetConfPath("conf.d", StubStatusConfigName)
 	if _, err := os.Stat(stubStatusConfPath); os.IsNotExist(err) {
 	if _, err := os.Stat(stubStatusConfPath); os.IsNotExist(err) {
 		return false, ""
 		return false, ""
 	}
 	}
 
 
-	ngxConfig, err := ParseNgxConfig(stubStatusConfPath)
+	ngxConfig, err := nginx.ParseNgxConfig(stubStatusConfPath)
 	if err != nil {
 	if err != nil {
 		return false, ""
 		return false, ""
 	}
 	}
@@ -159,7 +160,7 @@ func EnableStubStatus() error {
 
 
 // DisableStubStatus Disable stub_status module
 // DisableStubStatus Disable stub_status module
 func DisableStubStatus() error {
 func DisableStubStatus() error {
-	stubStatusConfPath := GetConfPath("conf.d", StubStatusConfigName)
+	stubStatusConfPath := nginx.GetConfPath("conf.d", StubStatusConfigName)
 	if _, err := os.Stat(stubStatusConfPath); os.IsNotExist(err) {
 	if _, err := os.Stat(stubStatusConfPath); os.IsNotExist(err) {
 		return nil
 		return nil
 	}
 	}
@@ -169,7 +170,7 @@ func DisableStubStatus() error {
 
 
 // CreateStubStatusConfig Create a new stub_status configuration file
 // CreateStubStatusConfig Create a new stub_status configuration file
 func CreateStubStatusConfig() error {
 func CreateStubStatusConfig() error {
-	httpConfPath := GetConfPath("conf.d", StubStatusConfigName)
+	httpConfPath := nginx.GetConfPath("conf.d", StubStatusConfigName)
 
 
 	const stubStatusTemplate = `
 	const stubStatusTemplate = `
 # DO NOT EDIT THIS FILE, IT IS AUTO GENERATED BY NGINX-UI
 # DO NOT EDIT THIS FILE, IT IS AUTO GENERATED BY NGINX-UI
@@ -219,7 +220,7 @@ server {
 
 
 	stubStatusConfig := buf.String()
 	stubStatusConfig := buf.String()
 
 
-	ngxConfig, err := ParseNgxConfigByContent(stubStatusConfig)
+	ngxConfig, err := nginx.ParseNgxConfigByContent(stubStatusConfig)
 	if err != nil {
 	if err != nil {
 		return errors.Wrap(err, "failed to parse new nginx config")
 		return errors.Wrap(err, "failed to parse new nginx config")
 	}
 	}