大型網站的優化技術:
1,SEO,優化一種,
2,頁面靜態化
3,memcache(內存緩存)
4,服務器集群技術
總的目標:提高網站的訪問速度,SEO目的:提高網站的排名,(解決的是速度)
SEO: google 的優化,百度的優化:
今天先從頁面靜態化來講:
先講幾個概念:
1,靜態網址
純粹的html文檔
http://localhost/dir&file/var.html
但是大家不要以為 後綴是html的就是靜態網站,
2,動態網址(網站)
localhost/dir&file/var.php?name=admin&id=2
根據用戶在地址欄傳遞不同的參數,顯示不同的結果
3,偽靜態網址
偽靜態的:
TP框架的時候,url的幾種模式:
1,/ pathinfo
2, MVC ?m=&a=
3,重寫模式:(和pathinfo模式區別:重寫少了入口文件)
修改apache的配置
增加htacess文件
tp框架中重寫模式,偽靜態:
localhost/dir&file/news-id/2/name/admin.html
為什麼要將動態網站改成靜態的形式:
1,/*1=1*/ 防止sql注入
2,動態的網站不利於SEO,因為?後面的參數會動態的變化,搜索引擎抓取的時候,不知道該怎麼保存
,、sina.com/index.html index.php?act=index
原則:能不從數據庫獲得數據就盡量不要去操作數據庫
如何實現頁面靜態化:
頁面靜態化的分類:
1,按照形式:
1,真靜態
2,偽靜態
2,按照范圍:
1,局部靜態話(jquery,ajax)
2,全部靜態化
搜索引擎:
1,抓取你的網站的內容,不是一股腦的抓取所有的內容,都放到一塊
2,而是將你的內容進行歸類,根據你的關鍵字,進行排名
如何做到SEO友好呢?
1,百度的建議:
url的長度:不能多於 255個字節
搜索引擎抓取的時候:
從首頁開始觸發:遇到一個頁面抓取它的內容,將內容保存起來,
www.sina.com/index.html
www.sina.com/news/soprt.html
因為越短的抓取的越早,越頻繁,更新就越快,認為你很好
而且每個頁面抓取的時間有限,每個頁面最多分配 5秒之內
當然網站越好,排名越高,分配的時間越長
2,meta 標簽的keywords desciption 標簽也是做給搜索引擎看的
然SE 會根據你的關鍵字和描述進行大概的分類
可以禁止搜索引擎抓取我們網站的內容:
在網頁代碼<head>與</head>的之間,加入nofollow屬性!!如果是超鏈接,就是<a>標簽裡加入
rel="nofollow"即可!
(2)robots.txt
關鍵字
description
(3)盡量不要在前台使用 frame framset , 後台可以使用,框架*(因為後台避免搜索引擎抓取)
(4)flash,盡量使用圖片代替,jquery做一些特效
(5)圖片,盡量給每一個圖片增加 alt屬性,圖片還沒有顯示的時候,先顯示alt提示文字
SEO優化----
如何實現頁面靜態化:
通過php的ob緩存來實現
提高排名
提高速度
隨著360綜合搜索,出現,百度廣告非常謹慎
1,通過php的ob緩存來實現
通過工具可以測試,網站的訪問速度
apache自帶了一個 ab.exe 這個工具
可以檢測你的網站的訪問速度
php5.2 之前默認情況是關閉ob緩存,在php5.3之後,默認是開啟ob緩存的
在php.ini output buffering
面試:使用開發環境:apache2.2.6
mysql 版本: 5.3
使用php的ob緩存實現頁面靜態化
1,緩存:smarty緩存, ThinkPHP框架的緩存,PHP的ob緩存
(1)ob---緩存,先將輸出的數據呢,緩沖到一塊空間
然後顯示的時候再顯示這塊空間的緩存的數據
因為默認有一些header信息,然後一遇到echo ,就會給浏覽器會送數據
因為默認的header已經隨著echo被發送到浏覽器了
ob緩存入門
沒有錯誤提示了呢?
引出ob緩存的原理:
php的緩存:
(1)ob緩存
先判斷一下,是否開啟ob緩存,如果你開啟了,先將輸出的數據放到ob緩存中,如果你沒有開啟ob緩存
,然後放到程序緩存中
(2)程序緩存
就是如果沒有開啟ob緩存,先將數據緩存到程序中,等echo都完了,再統一的輸出
浏覽器也有緩存:
浏覽器先攢著數據,等達到一定的數量之後(ie 500多MB)的時候才輸出
如何獲得緩存的數據
1,ob_start() 先將輸出的數據優先放入到 ob緩存中
2,ob_clean() 清空緩存,但是沒有關閉
3,ob_end_clean() 清空緩存,同時也關閉緩存
4,ob_flush() 將ob緩存的數據,輸出到程序緩存
5,ob_end_flush() 將ob緩存的數據輸出到程序緩存並且關閉ob緩存
ob_flush(); //只是將ob緩存的數據,輸出到程序緩存
ob_end_flush(); //輸出之後再將ob緩存緩存關閉
flush() 會將程序緩存的數據,輸出到浏覽器緩存
浏覽器緩存:類似於php的程序緩存,先將每一個輸出輸出到程序緩存,等輸出完畢再顯示到浏覽器
PHP的緩存機制:
1,ob緩存,如果開啟了ob緩存,優先將數據放到ob緩存中
2,程序緩存,如果沒有開啟ob緩存,再將數據緩存到程序緩存
頁面靜態化案例:
新聞管理系統:
output_buffering = Off 關閉緩存
補課說了一下:
mysql數據類型:
varchar(32) : 顯示多少位
varchar(255) :
一個字母、數字,占多少個字節:utf-8 2 漢字:3
gbk 都是占1個字節
1個varchar 表示的長度范圍 0-65535之間 varchar(255)
char 定長的字符串: char(255) 編碼的位數,255指的是顯示/保存多少位
char() 定長,不管你存儲了多少,都站指定的字節數
int: 最長是429.。。 15175290987 百億 表示4個字節
tinyint: 1個字節 0-255 unsigned
myisam: 和 innodb: 區別
1,myisam 不支持事務,innodb支持事務
2,myisam 查詢速度比innodb快,
3,myisam 不支持外鍵,innodb支持外鍵(mysql的新版本已經支持外鍵)
外鍵,保持數據的完整性,
事務:邏輯上的一組操作,組成這組操作的各個單元,要麼都成功,要麼都失敗
三大特性:
原子型
一致性
完整的項目,不是統一的都是myisam也不是都是innodb 而是根據具體的業務
問題:每次訪問都要查詢數據庫,頻繁的操作數據庫,造成服務器,數據庫壓力增加,而且用戶可能在
10分鐘之內新聞內容不會更新,所以我們這樣:
第一個人訪問之後,生成靜態頁面,
第二個人,3,4 再訪問這個頁面的時候,直接顯示靜態頁面
這個時候有個問題:
如果新聞不幸更新了,該怎麼辦?
1,判斷
最終,要添加新聞的時候,或者修改新聞的時候,都應該生成靜態頁面
添加新聞的時候生成靜態頁面:
提交之後,顯示入庫,然後生成靜態頁面
涉及模板替換內容
創建一個模板文件,當樣式基本固定,但是內容不確定的時候,先用占位符代替數據部分
然後,獲得數據之後,在替換過來
r fopen()
w
fgets()函數,讀取一行內容(只是)
fopen() 打開文檔 r w
fwrite() 向打開的這個文檔中寫入內容
feof() 測試當前文檔是否讀取到了結尾
fclose() 打開文檔後一定要記得關閉
file_put_contents() 向一個文件中寫入內容
file_get_contents() 讀取文件的內容
1,網站分類
2,網站優化百度 對網站優化建議:5點
3,如何檢測網站性能(訪問速度)
4,ob緩存開頭