|
   
- 积分
- 28382
- PJ币
- 2872 元
- 注册时间
- 2005-8-25
   
|
1#
发表于 2008-7-17 01:15
| 只看该作者
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 的部份- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta http-equiv="Content-Language" content="UTF-8" />
- <meta http-equiv="Cache-Control" content="NO-CACHE" />
- <meta http-equiv="PRAGMA" content="NO-CACHE"/>
- <meta name="robots" content="all" />
- <meta name="author" content="your@email.com,YourName" />
- <meta name="Copyright" content="PJBlog3 CopyRight 2008" />
- <meta name="keywords" content="PuterJam,Blog,ASP,designing,with,web,standards,xhtml,css,graphic,design,layout,usability,accessibility,w3c,w3,w3cn" />
- <meta name="description" content="<$siteName$> - <$blog_Title$>" />
- <title><$log_Title$> - <$siteName$></title>
复制代码 發現問題了嗎? 整個meta 的 content 都是有問題的,因為每一個頁面將會產生一樣的關鍵字,而描述的部份也嫌的太簡陋
首先,我要修改 上面meta 的一些內容,畢竟會帶給搜尋引擎較好的優化結果,底下為我修改後的畫面:- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta http-equiv="Content-Language" content="UTF-8" />
- <meta http-equiv="Cache-Control" content="NO-CACHE" />
- <meta http-equiv="PRAGMA" content="NO-CACHE"/>
- <meta name="robots" content="all" />
- <meta name="author" content="Tank" />
- <meta name="Copyright" content="<$siteName$>" />
- <meta name="keywords" content="<$mykey$>,<$log_Title$>,Me,我的部落格,<$siteName$>" />
- <meta name="description" content="<$log_Title$>。<$Mydescription$>" />
- <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行- If log_View("log_comorder") Then comDesc = "Desc" Else comDesc = "Asc" End If
-
- Temp1 = Replace(Temp1, "<$CategoryList$>", CategoryList(0))
- Temp1 = Replace(Temp1, "<$base$>", baseUrl)
- Temp1 = Replace(Temp1, "<$siteName$>", siteName)
- Temp1 = Replace(Temp1, "<$blog_Title$>", blog_Title)
- Temp1 = Replace(Temp1, "<$skin$>", blog_DefaultSkin)
- Temp1 = Replace(Temp1, "<$blogabout$>", blogabout)
- Temp1 = Replace(Temp1, "<$comDesc$>", comDesc)
- Temp1 = Replace(Temp1, "<$CookieName$>", CookieName)
复制代码 我要修改為- Temp1 = Replace(Temp1, "<$CategoryList$>", CategoryList(0))
- Temp1 = Replace(Temp1, "<$base$>", baseUrl)
- '將標籤替換成為我的keyworld,我加入的 delHtml 於 funcction.asp ,另外在library.asp 384行加上Tag Class類的函數 getTags.Mykeytags
- Temp1 = Replace(Temp1, "<$mykey$>", delHtml(getTags.Mykeytags(log_View("log_tag"))))
- '將文章的描述前100個字置換為 <$Mydescription$>作為網頁的描述,必須判斷文章由UBB或是FEDITOR編輯
- If log_View("log_edittype") = 1 Then
- 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,""))
- Else
- Temp1 = Replace(Temp1, "<$Mydescription$>", replace(left(delHtml(UnCheckStr(log_View("log_Content"))),100),vbcrlf,""))
- End If
- Temp1 = Replace(Temp1, "<$siteName$>", siteName)
- Temp1 = Replace(Temp1, "<$blog_Title$>", blog_Title)
- Temp1 = Replace(Temp1, "<$skin$>", blog_DefaultSkin)
- Temp1 = Replace(Temp1, "<$blogabout$>", blogabout)
- Temp1 = Replace(Temp1, "<$comDesc$>", comDesc)
- Temp1 = Replace(Temp1, "<$CookieName$>", CookieName)
复制代码 在上面我有註解,所以打開 common/function.asp 到檔案的第1042行%>前面加入- Function delHtml(strHtml)
- Dim objRegExp, strOutput
- '建立正則表達式
- Set objRegExp = New Regexp
- '設置是否區分大小寫
- objRegExp.IgnoreCase = True
- '是匹配所有字符串還是只是第一個
- objRegExp.Global = True
- '設置模式引號中的是正則表達式,用來找出html標簽
- objRegExp.Pattern = "(<[a-zA-Z].*?>)|(<[\/][a-zA-Z].*?>)"
- '將html標簽去掉
- strOutput = objRegExp.Replace(strHtml, "")
- '防止非html標簽不顯示
- strOutput = Replace(strOutput, "<", "<")
- strOutput = Replace(strOutput, ">", ">")
- delHtml = strOutput
- Set objRegExp = Nothing
- 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)- Public Function MykeyTags(Str) '過濾標籤,傳回keywords
- If IsEmpty(Str) or IsNull(Str) or Len(Str) = 0 Then
- Exit Function
- filterHTML = Str
- Else
- Dim log_Tag, log_TagItem
- For Each log_TagItem IN Arr_Tags
- log_Tag = Split(log_TagItem, "||")
- Str = Replace(Str, "{"&log_Tag(0)&"}", "<a href=""default.asp?tag="&Server.URLEncode(log_Tag(1))&""">"&log_Tag(1)&"</a>,")
- Next
- Dim re
- Set re = New RegExp
- re.IgnoreCase = True
- re.Global = True
- re.Pattern = "\{(\d)\}"
- Str = re.Replace(Str, "")
- Str = left(Str,len(Str)-1)
- MykeyTags = Str
- End If
- End Function
复制代码 這樣就完成了網頁關鍵字及描述的靜態網頁優化了
這是我稍微改了一下,當然可以在優化一下將程式再簡短一些,目前對於頁面優化的部份,我就覺得很管用了
接下來幾天我應該會好好研究PJBLOG3的一些語法,慢慢改進功能,如您有更好的建言,歡迎留言給我 |
-
3
评分次数
-
人生没有彩排,每一刻都是现场直播,把握自己从现在开始
 |
|