返回列表 回复 发帖

keywords及description静态化页面后的简单优化 (7.23更新)

作者:tank
转自:http://www.me.idv.tw/article/225.htm

注意:请注意备份,谨慎修改



我用的這個PJBlog 終於發表了新的版本,靜態網頁版本 v2.8.4.133
下載後立即升級並且將這些程式先做了繁體中文化,雖然是使用 utf-8,繁體化後看起來總是比較順眼
第一、升級後有一些之前修改的插件都會不見
第二、已經使用了FCKeditor V2.6版,我之前已經在使用了,而且我有一些插件也不見,還好,整個網站我已經備份好在型升級,所以將備份的FCKeditor直接覆蓋到新版本就行了
第三、因為使用全靜態的網頁模式,似乎側邊的功能有一點不順暢,不過大部分的插件都能運行
第四、馬上研究了一下靜態輸出的程式,原來放在Template裡邊,另外static.htm就是主要的靜態模板
第五、於後台更新為靜態頁面,發現meta 裡邊的 keywords及description 都使用原始的字串,原本的用意除了改善速度,但對於搜尋引擎的優化帶來很嚴重的問題
第六、選單還是處於動態模式,並未全面靜態化;不過對於先前的?id=xxxx 這樣的功能還是存在,不過遇到頁面轉向的問題,有一些奇怪

這是我目前發現的一些疑點,所以開始動手處理第五項比較棘手的問題
當然我面先了解一下static.htm的內容發現 meta 的部份
  1. <head>   
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   
  3. <meta http-equiv="Content-Language" content="UTF-8" />   
  4. <meta http-equiv="Cache-Control" content="NO-CACHE" />     
  5. <meta http-equiv="PRAGMA" content="NO-CACHE"/>   
  6. <meta name="robots" content="all" />   
  7. <meta name="author" content="your@email.com,YourName" />   
  8. <meta name="Copyright" content="PJBlog3 CopyRight 2008" />   
  9. <meta name="keywords" content="PuterJam,Blog,ASP,designing,with,web,standards,xhtml,css,graphic,design,layout,usability,accessibility,w3c,w3,w3cn" />   
  10. <meta name="description" content="<$siteName$> - <$blog_Title$>" />   
  11. <title><$log_Title$> - <$siteName$></title>   
复制代码
發現問題了嗎? 整個meta 的 content 都是有問題的,因為每一個頁面將會產生一樣的關鍵字,而描述的部份也嫌的太簡陋
首先,我要修改 上面meta 的一些內容,畢竟會帶給搜尋引擎較好的優化結果,底下為我修改後的畫面:
  1. <head>   
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   
  3. <meta http-equiv="Content-Language" content="UTF-8" />   
  4. <meta http-equiv="Cache-Control" content="NO-CACHE" />     
  5. <meta http-equiv="PRAGMA" content="NO-CACHE"/>   
  6. <meta name="robots" content="all" />   
  7. <meta name="author" content="Tank" />   
  8. <meta name="Copyright" content="<$siteName$>" />   
  9. <meta name="keywords" content="<$mykey$>,<$log_Title$>,Me,我的部落格,<$siteName$>" />   
  10. <meta name="description" content="<$log_Title$>。<$Mydescription$>" />   
  11. <title><$log_Title$> - <$siteName$></title>   
复制代码
你發現我改變了什麼呢?
meta 的copyright 改為我的網站名稱
meta 的 keywords ,ㄛ,怎麼會有<$mykey$>
meta 的 description ,呀,怎麼又會有<$mydescription$>
這兩個索引鍵值是我加上去的,主要是要來替換我要的值
OK,改了這個靜態頁面模版後,我們就要先了解一下程式是如何產生靜態頁面的,靜態頁面產生的網頁是 class下的cls_logAction.asp
利用編輯器開啟 cls_logAction.asp 畫面,到第919行看到
'======================================================
'全靜態化
'======================================================
底下就是產生靜態頁面的關鍵,可以看到一個一個替代索引鍵值的內容
因此,我們要將我上面增加的<$mykey$>與<$Mydescription$>也一起替換掉。
我們在寫日誌會要求輸入標籤,因為你會將它作為標籤表示這些字串的重要性,所以這裡的<$mykey$>其實我要替換的就是標籤內容
而<$Mydescription$>的值我是取內容前面100個字來替代網頁中的meta 的description
以上說明後要開始修改一些內容

來到第972行
  1. If log_View("log_comorder") Then comDesc = "Desc" Else comDesc = "Asc" End If      
  2.    
  3. Temp1 = Replace(Temp1, "<$CategoryList$>", CategoryList(0))   
  4. Temp1 = Replace(Temp1, "<$base$>", baseUrl)   
  5. Temp1 = Replace(Temp1, "<$siteName$>", siteName)        
  6. Temp1 = Replace(Temp1, "<$blog_Title$>", blog_Title)   
  7. Temp1 = Replace(Temp1, "<$skin$>", blog_DefaultSkin)      
  8. Temp1 = Replace(Temp1, "<$blogabout$>", blogabout)      
  9. Temp1 = Replace(Temp1, "<$comDesc$>", comDesc)      
  10. Temp1 = Replace(Temp1, "<$CookieName$>", CookieName)   
复制代码
我要修改為
  1. Temp1 = Replace(Temp1, "<$CategoryList$>", CategoryList(0))   
  2. Temp1 = Replace(Temp1, "<$base$>", baseUrl)   
  3. '將標籤替換成為我的keyworld,我加入的 delHtml 於 funcction.asp ,另外在library.asp 384行加上Tag Class類的函數 getTags.Mykeytags   
  4. Temp1 = Replace(Temp1, "<$mykey$>", delHtml(getTags.Mykeytags(log_View("log_tag"))))   
  5. '將文章的描述前100個字置換為 <$Mydescription$>作為網頁的描述,必須判斷文章由UBB或是FEDITOR編輯   
  6. If log_View("log_edittype") = 1 Then   
  7. Temp1 = Replace(Temp1, "<$Mydescription$>", replace(left(delHtml(UnCheckStr(UBBCode(HtmlEncode(log_View("log_Content")), Mid(log_View("log_ubbFlags"), 1, 1), Mid(log_View("log_ubbFlags"), 2, 1), Mid(log_View("log_ubbFlags"), 3, 1), Mid(log_View("log_ubbFlags"), 4, 1), Mid(log_View("log_ubbFlags"), 5, 1)))),100),vbcrlf,""))   
  8. Else   
  9. Temp1 = Replace(Temp1, "<$Mydescription$>", replace(left(delHtml(UnCheckStr(log_View("log_Content"))),100),vbcrlf,""))   
  10. End If   
  11. Temp1 = Replace(Temp1, "<$siteName$>", siteName)        
  12. Temp1 = Replace(Temp1, "<$blog_Title$>", blog_Title)   
  13. Temp1 = Replace(Temp1, "<$skin$>", blog_DefaultSkin)      
  14. Temp1 = Replace(Temp1, "<$blogabout$>", blogabout)      
  15. Temp1 = Replace(Temp1, "<$comDesc$>", comDesc)      
  16. Temp1 = Replace(Temp1, "<$CookieName$>", CookieName)
复制代码
在上面我有註解,所以打開 common/function.asp 到檔案的第1042行%>前面加入
  1. Function delHtml(strHtml)   
  2. Dim objRegExp, strOutput   
  3. '建立正則表達式   
  4. Set objRegExp = New Regexp   
  5. '設置是否區分大小寫   
  6. objRegExp.IgnoreCase = True     
  7. '是匹配所有字符串還是只是第一個   
  8. objRegExp.Global = True   
  9. '設置模式引號中的是正則表達式,用來找出html標簽   
  10. objRegExp.Pattern = "(<[a-zA-Z].*?>)|(<[\/][a-zA-Z].*?>)"   
  11. '將html標簽去掉   
  12. strOutput = objRegExp.Replace(strHtml, "")   
  13. '防止非html標簽不顯示   
  14. strOutput = Replace(strOutput, "<", "<")   
  15. strOutput = Replace(strOutput, ">", ">")     
  16. delHtml = strOutput   
  17. Set objRegExp = Nothing   
  18. End Function  
复制代码
然後存檔即可
線在開啟 common/libary.asp 到第384行,我們找到
'*******************************************
'  Tag Class
'*******************************************
現在我們要藉助 tag 類 裡邊的Public Function filterHTML(Str) 函數來修改一下 成為我要的 Public Function MykeyTags(Str)
我們在
Public Function filterHTML(Str)
.
...
End Function
底下加入Public Function MykeyTags(Str)
  1.     Public Function MykeyTags(Str) '過濾標籤,傳回keywords
  2.         If IsEmpty(Str) or IsNull(Str) or Len(Str) = 0 Then
  3.             Exit Function
  4.             filterHTML = Str
  5.         Else
  6.             Dim log_Tag, log_TagItem
  7.             For Each log_TagItem IN Arr_Tags
  8.                 log_Tag = Split(log_TagItem, "||")
  9.                 Str = Replace(Str, "{"&log_Tag(0)&"}", "<a href=""default.asp?tag="&Server.URLEncode(log_Tag(1))&""">"&log_Tag(1)&"</a>,")
  10.             Next
  11.             Dim re
  12.             Set re = New RegExp
  13.             re.IgnoreCase = True
  14.             re.Global = True
  15.             re.Pattern = "\{(\d)\}"
  16.             Str = re.Replace(Str, "")
  17.             Str = left(Str,len(Str)-1)
  18.             MykeyTags = Str
  19.         End If
  20.     End Function
复制代码
這樣就完成了網頁關鍵字及描述的靜態網頁優化了
這是我稍微改了一下,當然可以在優化一下將程式再簡短一些,目前對於頁面優化的部份,我就覺得很管用了

接下來幾天我應該會好好研究PJBLOG3的一些語法,慢慢改進功能,如您有更好的建言,歡迎留言給我
3

评分次数

  • evio

  • wolfit

  • huhaisen

人生没有彩排,每一刻都是现场直播,把握自己从现在开始

请大家把问题解决后请自行修改编辑帖子标明“已解决”,并将解决方法补全,以方便日后查看
对于热心解答者,给予一定的奖励!支持适用原创。大家多多加油,共同把PJFourm建设好!
不错 希望PJ优化一下然后集成
欢迎你的访问
PR3的博客招友情连接
继续路过打酱油!!!
做个俯卧撑
·● 迈克伍:micwu.com
真不错。
感謝你將我的文章POST 出來
原本想說測試一段時間後再行公佈於此
不過到目前為止,還沒發生任何狀況
目前我想對插件的部分研究一下,如何將在靜態頁面獲得好的效果
我也有個網站使用Oblog 不過這個雖然使用了靜態頁面,但似乎使用了太多Js
因此我想未來對於PJBlog 的開發要儘量不要再使用 js
這也是我想做的重點
也歡迎大家來我的部落格 http://www.me.idv.tw 與我研究
希望能對 Pjblog 有點貢獻
2

评分次数

  • huhaisen

  • anson

台湾的……什么时候回归祖国?
呵呵,不错。
学习下??
http://www.yiqijob.cn
返回列表