前言
本篇的議題如下
識別和分析服務端的性能瓶頸(上)
內存(前篇)
緩存(前篇)
CPU(後篇)
處理請求線程(後篇)
提高性能的一些簡單改進措施(下)
部署優化(前篇)
減少不必要回傳(前篇)
減少不必要的請求(後篇)
搜索引擎問題
熱鏈接問題
驗證碼(CAPTCHA)
網絡刮刀
服務端的要處理的請求越多
搜索引擎
首先來看看有關搜索引擎的問題
然後搜索引擎爬到我們的站點是一件好的事情
不需要被搜索引擎請求的文件一般如下
我們可以設置一下
步驟如下
User
Disallow: /
如果希望阻止搜索引擎爬某個文件夾
User
Disallow: /images/
Disallow: /js/
Disallow: /css/
Disallow: /private/
更有趣的是
User
Crawl
大家可以去上網找下一些如何影響Google
熱鏈接問題
就是在A網站上面顯示一個來自B網站的圖片鏈接
為一個組件就可以阻止這種情況的發生
aspx?tabid=
驗證碼(CAPTCHA)
我們常常在站點中加入一些驗證碼的功能來防止網絡注冊機
通過驗證碼阻止了注冊機隨意的消耗站點資源(如果沒有驗證碼
我們自己寫生成驗證碼的程序
網絡刮刀(Scrapers)與Dos
這個問題必須引起重視
本來站點被搜索引擎抓就有點消耗性能了
如果那些網絡刮刀程序的的IP地址變化不頻繁
當然了
下面我們就寫一些代碼來防止簡單的網絡刮刀程序和簡單的Dos攻擊
下面的代碼中
private const int intervalSeconds =
private const int maxRequestsInInterval =
如果認為這個
private const int blockedPeriodSeconds =
下面
private class VisitorInfo
{
public int nbrHits;
public bool blocked;
public VisitorInfo()
{
nbrHits =
blocked = false;
}
}
在BotDefence類中加入一個方法IsBotAttach來判斷一個請求是否是攻擊性的請求
public static bool IsDosAttack()
{
string visitorIP = HttpContext
VisitorInfo visitorInfo = (VisitorInfo)HttpContext
if (visitorInfo == null)
{
HttpContext
visitorIP
DateTime
System
}
else
{
if (visitorInfo
{
return true;
}
visitorInfo
if (visitorInfo
{
visitorInfo
HttpContext
visitorIP
DateTime
System
return true;
}
}
return false;
}
上面的代碼都是自解釋的
From:http://tw.wingwit.com/Article/program/net/201311/13813.html