標簽歸檔:ASP

用FileDB快速開發生成靜態系統

最近要用到一套ASP生成靜態的小系統,雖然說程序簡單,但是寫起來還是比較繁瑣的,正好前幾天寫過一個:ASP文件存儲方案(http://www.shiekolong331.icu/p/asp-filedb),用改類,可以直接快速開發生成ASP的系統。

  '加載模板
  '對于模板,不了解的,可以參考我以前寫過的文章,當然也可以用任何asp的模板系統
  set p = new MYW3_TPL
  p.LoadTpl "tpl/chengyu.html"
  p.assign "Title","貓七"
  p.assign "WebHome",WebHome
  p.assign "WebSkin",WebSkin
  
  '/index.html
  url = "index"
  '/home/index.html
  'url = "home::index"
  '/home/1/2/333.html
  'url = "home::1::2::333"
  '生成靜態
  ‘使用FileDB類,超級簡單
  set f = new FileDB
  f.DBPath = "/"
  f.idxKey = url
  f.save(p.outHtml)

需要對FileDB的類做一下小的修改

Private Function getPath()
    Dim tmp
    getPath = replace(idxKey,"::","/") & ".html"
  End Function

ASP文本存儲方案-FileDB

四月份做個一個短信系統,當時為了節省成本(使用萬網的空間,不帶SQL數據庫空間便宜),使用了ASP+Access開發,最近需要升級,增加一個短信接口。發現現在Access的數據庫竟然有170MB。我的天啊,因為查詢比較少,不是很耗資源,所以沒有檢查出來。
僅僅六個月,數據庫竟然到了170MB。隨著客戶業務的增長,可能再過六個月就要到500MB了,真恐怖。主要占空間大小的,就是存儲的短信的發送號碼,思考再三,決定將所有的保存到文本文件中。于是寫下了一個暫時成為FileDB的asp類。

Class FileDB
  Dim fso,IdxKey,DBPath
  Private Sub Class_Initialize
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    idxKey = "demo::test"
    DBPath = "DataCenter/File_DB/"
  End Sub

  Private Function getPath()
    Dim tmp
    getPath = replace(idxKey,"::","/") & ".html"
  End Function

  Private Function checkFile(byref fname)
    fname = Server.Mappath(DBPath & getPath())
    checkFile = fso.fileexists(fname)
  End Function

  Private Sub createPathName(byval idxKey)
    Dim TmpPa
    TmpPa = Server.Mappath(DBPath & idxKey)
    if not fso.folderexists(TmpPa) then
      if instr(idxKey,"\") > 0 then Call createPathName(left(idxKey,instrrev(idxKey,"\")-1))
      fso.createfolder(TmpPa)
    end if
  End Sub

  Public Function getTxt()
    if checkFile(fname) then
      set Txt = fso.getfile(fname)
      if Txt.size = 0 then
        Tmp = ""
      else
        Tmp = fso.opentextfile(fname).readall
      end if
      set Txt = Nothing
      getTxt = Tmp
    else
      getTxt = ""
    end if
  End Function

  Public Function remove()
    if checkFile(fname) then
      fso.deletefile fname
    end if
  End Function

  Public Function Save(byval content)
    if checkFile(fname) then
      set fpo