首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Web 應用中圖片與長文本存儲策略:數據庫 vs 文件系統,Apache/Tomcat 協作優化

     編輯:Java 相關知識

核心原則:業務數據進庫,靜態資源落盤

  • 長文本:MySQL TEXT 無長度限制、支援標準 SQL 查詢/搜索,放庫最合適;Oracle CLOB 需特殊 API、VARCHAR2 限 4000 字符,不推薦。
  • 圖片/多媒體:需 BLOB 處理、無法標準 SQL 操作、佔用 DB 連接與緩衝區,**應存文件系統**,庫中僅存路徑/URL。
  • 事務性:圖文業務通常不要求強事務,BerkeleyDB 加事務反而過度設計;Oracle 專注高可靠商務事務。

面向對象持久化趨勢下的存儲標準化

Hibernate/JDO/DAO 皆將 Java 對象視為數據庫對象延伸。存儲方式標準化(文件系統存二進制、資料庫存結構化數據)能大幅簡化 ORM 映射、提升性能與可靠性。

Apache + Tomcat 協作:靜態資源交給 Apache

早期誤區:worker.properties 配 [uri:/jsp-examples/*] 導致所有請求進 Tomcat,Apache 成擺設。Tomcat 處理靜態文件效率約為 Apache 1/10。

正確 worker.properties 映射

[uri:/jsp-examples/*.jsp]
[uri:/jsp-examples/servlet/*]
# Struts 專案再加
[uri:/jsp-examples/*.action]

非上述模式的請求(HTML、圖片、CSS、JS)自動由 Apache 處理,極大降低 Java 服務器負載。

虛擬主機與 Symbolic Link 技巧

  • [uri:/*] 危險:所有請求進 Tomcat,且 AJP13 可能直接丟棄。
  • 合理配置後,Apache 支援 FollowSymLinks,可將上傳目錄鏈接到 Webapp 外部,解決 Tomcat 不支援 Symbolic Link 的痛點,便於目錄管理與磁盤擴容。

避坑指南

  1. 通配符濫用是配置錯誤首因。
  2. 瀏覽器緩存(Firefox 等)可能導致測試結果不可重現(「Matrix 現象」),測試前清緩存或用無痕模式。
  3. 虛擬主機 DocumentRoot 權限、httpd.conf 包含順序需仔細核對。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved