頁面靜態化

来源:http://www.cnblogs.com/Lance--blog/archive/2016/02/16/5192881.html
-Advertisement-
Play Games

大型網站的優化技術:1,SEO,優化一種,2,頁面靜態化3,memcache(記憶體緩存)4,伺服器集群技術 總的目標:提高網站的訪問速度,SEO目的:提高網站的排名,(解決的是速度)SEO: google 的優化,百度的優化: 今天先從頁面靜態化來講:先講幾個概念:1,靜態網址純粹的html文檔ht


大型網站的優化技術:

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緩存開頭


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java學習筆記 類型1.1:類的相關 Tags: 編程,Java 類之間關係 代理例子查看《Java編程思想》中的P131。簡單來說,代理就是組合之後,對組合進來的類的方法進行封裝(不是重寫,而是在函數體內調用組合進來類的對應的"同名"方法。)。 類訪問許可權 |訪問修飾符| 同類 | 同包 |不同
  • 所有的外部輸入參數都應該檢查合法性。 未正確處理輸入數據將可能導致sql註入等漏洞。 框架提供系列函數來取$_REQUEST中的值 requestInt requestString requestFloat requestBool ps:註意$_REQUEST中變數類型可能會是數組 如請求為 ?i[
  • 一、函數的定義 用戶函數的定義從function 關鍵字開始,如下 function foo($var) { echo $var; } 1、詞法分析 在Zend/zend_language_scanner.l中我們找到如下所示的代碼: <ST_IN_SCRIPTING>"function" { re
  • 首先上一張出現問題的圖片: 出現這個問題一般是你的jdk和eclipse不是同一位的,比如你的jdk是32位的但是eclipse下載的是64位的就會導致這種問題。 解決方案:把兩者都換為32或者64位的即可。 如何查看自己的jdk版本?大家可以下載到自己設備運行(註意:一定要以管理員許可權運行),網址
  • 最近碰到一些 SSL 的小問題,特記錄下。 我們有個 Java 實現的 SSL TCP 服務端,為客戶端(PC、Android 和 iOS)提供 SSL 接入連接服務。最近有用戶反饋其手機上 App 不能正常連接登錄,別人手機上都可以。經過單獨回訪調查該用戶使用的手機操作系統是 Android 6.
  • 一、什麼是CocoaPods CocoaPods是iOS項目的依賴管理工具,該項目源碼在Github上管理。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設置和第三方開源庫的時間。 在使用CocoaPods之前,開發項目需要用到第三方開源庫的時候,我們需要 1...
  • 問題沒有解決,屬於菜鳥級別的孩子~~~~ 求助啊,求助!!!!!! 報告如下: Warning:An unhandled exception occurred. Please report the problemusing the error reporting dialog or via emai
  • php的函數包括用戶定義的函數、內部函數(print_r count...)、匿名函數、變數函數($func = 'print_r'; $func(array('a','b'));) PHP內核源碼中將函數分為以下類型 #define ZEND_INTERNAL_FUNCTION 1 #define
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...