<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-60  評論-35  文章-15  trackbacks-0
     
    站長工具
      eWebEditor網(wǎng)頁編輯器
      FCKEditor在線編輯器
      HTML在線編輯器
      所見即所得CSS編輯器
      CSS整形與最佳化工具

      顏色工具
      配色方案創(chuàng)建工具二
      在線網(wǎng)頁配色器

      網(wǎng)絡(luò)輔助
      超級轉(zhuǎn)貼工具
      易貼網(wǎng)絡(luò)備忘錄
      超級編碼轉(zhuǎn)換器

      查詢工具
      中國站長站查詢工具
      日梭萬年歷
      世界網(wǎng)絡(luò)查詢工具
      在線電子地圖
      全國報紙雜志電子版總匯
      全息在線萬年歷

      圖片工具
      Logo在線制作
      IE版圖像處理工具
      圖片倉庫
      Eoool在線圖片制作
      在線生成圖片按鈕的工具
      在線生成條形碼和印章的工具
      字庫字體在線工具
      在線按鈕制作工具
      多媒體可視化開發(fā)系統(tǒng)
      愛狗狗吧在線彩字生成工具
      在線照片相框生成工具

      加密解密
      網(wǎng)頁加密解密工具

      計算工具
      多功能計算器

      在線手冊
      終極配色手冊
      邁至科ASP在線技術(shù)手冊
      XML官方指南中文版
      Windows API 參考大全
      VBScript 語言參考
      VB API 參考手冊
      PHP用戶手冊
      PHP編碼規(guī)范
      InnoDB  中文參考手冊
      文檔對象模型中文手冊
      網(wǎng)頁制作完全手冊
      默認行為中文手冊
      樣式表濾鏡中文手冊
      樣式表中文手冊


    轉(zhuǎn)載自:http://www.egil.cn/article.asp?id=333
    posted @ 2008-01-05 20:45 Q系列類、方法、變量…… 閱讀(357) | 評論 (0)編輯 收藏

      一、AS調(diào)用JS方法時出現(xiàn)同名方法查看實例

      AS代碼如下:

    import flash.external.*;
    var v = ExternalInterface.available;
    t_btn.onRelease 
    = function (){
    //調(diào)用JS函數(shù)
    var s = ExternalInterface.call("say","JS函數(shù)調(diào)用成功!")
    //調(diào)用AS本地函數(shù)
    += say("\n本地函數(shù)調(diào)用成功!");
    r_txt.text 
    = s;
    }
    //AS本地函數(shù)
    function say(s){
    return s;
    }  
    HTML代碼:
    //定義一個JS函數(shù)
    function say(txt){
    return txt;
    可以看到在JS中定義了一個say方法供AS調(diào)用,現(xiàn)在我們在AS中定義了一個同名的say方法來驗證它們是否會出現(xiàn)覆蓋。結(jié)果證明它們不會覆蓋,都工作得很好。(PS:不錯~)

    二、JS調(diào)用AS方法時出現(xiàn)同名方法查看實例

      AS代碼如下:

    //導入包
    import flash.external.*;
    //提供JS訪問的函數(shù)名
    var _method:String = "say";
    //指定本地函數(shù)中this變量的作用域,可設(shè)置為null留空
    var e_area:Object = null;
    //AS內(nèi)部函數(shù)名
    var method:Function = say;
    //將函數(shù)注冊到容器列表
    var wasSuccessful:Boolean = ExternalInterface.addCallback(_method, method);
    ↑ 這里返回的void因此無法轉(zhuǎn)換為Boolean

    //查看注冊是否成功
    if(wasSuccessful){
    result_txt.text 
    = "函數(shù)注冊成功";
    }
    //本地的函數(shù)
    function say(txt:String) {
    result_txt.text 
    = txt;
    }

    HTML代碼如下:
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh_cn" lang="zh_cn">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>javascript 調(diào)用 flash 方法</title>
    <script language="javascript">AC_FL_RunContent = 0;</script>
    <script src="AC_RunActiveContent.js" language="javascript"></script>
    </head>
    <body bgcolor="#ffffff">
    <!--影片中使用的 URL-->
    <!--影片中使用的文本-->
    <!--
    <p>你們好</p>
    -->
    <!-- saved from url=(0013)about:internet -->
        
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="550" height="400" align="middle" id="myFlash">
        
    <param name="allowScriptAccess" value="sameDomain" />
        
    <param name="allowFullScreen" value="false" />
        
    <param name="movie" value="flash讀取css.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />    <embed name="myFlash" swLiveConnect="true" src="flash讀取css.swf" quality="high" bgcolor="#ffffff" width="550" height="400" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
        
    </object>
    <SCRIPT LANGUAGE=JavaScript>
    var InternetExplorer = navigator.appName.indexOf("Microsoft"!= -1;
    function myFlash_DoFSCommand(command, args) {
    var myFlashObj = InternetExplorer ? myFlash : document.myFlash;
    alert (args);
    }
    if (navigator.appName && navigator.appName.indexOf("Microsoft"!= -1 && 
    navigator.userAgent.indexOf(
    "Windows"!= -1 && navigator.userAgent.indexOf("Windows 3.1"== -1) {
    document.write('
    <SCRIPT LANGUAGE=VBScript\> \n');
    document.write('on error resume next \n');
    document.write('Sub myFlash_FSCommand(ByVal command, ByVal args)\n');
    document.write(' call myFlash_DoFSCommand(command, args)\n');
    document.write('end sub\n');
    document.write('
    </SCRIPT\> \n');

    </SCRIPT>

    <script>


    //定義一個JS本地函數(shù)
    function say(s){
    thisMovie(
    "myFlash").say(s);
    //↑這里的demo指的是使用Object插入flash的時候指定的id和embed指定的name,例如:id="demo"和name="demo"

    alert(s);
    }

    //瀏覽器兼容訪問DOM,并且將 flash Object返回
    function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft"!= -1) {
    return window[movieName]
    }
    else {
    return document[movieName]
    }
    }

    </script>


    <form name="www">
    內(nèi)容:
    <input type="text" name="sendText" maxlength="45" onChange="say(this.value)" > 
    </form>
    </body>
    </html>

    可以看到在AS中定義了一個say方法供JS調(diào)用,現(xiàn)在我們在JS中定義了一個同名的say方法來驗證它們是否會出現(xiàn)覆蓋。結(jié)果證明它們不會覆蓋,都工作得很好。(PS:也不錯~)

      通過上面的兩個例子我們可以得出結(jié)論在使用ExternalInterface時即使定義了同名方法,也不會造成方法覆蓋,你大可放心使用。



    其余
    ============================================================
     在論壇上經(jīng)??匆娪行率謫柕?#8220;我想讓FLASH得到URL中的參數(shù)ID號,該怎么辦?”“某某視頻網(wǎng)站的FLASH播放器是如何播放不同ID的視頻的?”...諸如此類問題看到了太多,每次都有一堆回帖,眾說紛紜,里面難免有誤導性質(zhì)的回復。今天特結(jié)合自己平時工作中使用的心得對此類問題做一個小小的歸納。
      我所指的靜態(tài)傳值是區(qū)別于與服務(wù)端通信進行值傳遞的方式,例如LoadVars,XML,Remoting之類,后者暫且不在本文的討論范圍內(nèi),當你想讓FLASH獲取URL中的參數(shù)時,你為何不換個角度想了?其實我們可以讓服務(wù)端動態(tài)生成SWF的的插入代碼,主動將我們需要的參數(shù)“靜態(tài)”傳遞給FLASH,F(xiàn)LASH直接用就可以了,根本不需要自己去拿,而以何種形式傳遞給FLASH,就是我所指的靜態(tài)傳值。我知道的可行的HTML與FLASH之間的靜態(tài)傳值方法有三種:
    • SWF地址后使用參數(shù)傳遞符“?”
    • FlashVars傳遞
    • JS控制

      下面來具體介紹下這三種方式的傳遞是如何工作的:
      

    一、SWF地址后使用參數(shù)傳遞符“?”

      我們知道,在ULR地址中使用參數(shù)傳遞符“?”可以以GET方式傳遞參數(shù),例如http://www.v-sky.com?uid=12&uname=vsky,這里使用了參數(shù)傳遞符“?”,同時使用了連接符“&”做為變量分隔標識,以這種規(guī)范的格式來傳遞兩個參數(shù):uid=12和uname=vsky,那么服務(wù)端可以使用GET方式獲取這兩個值。
      在FLASH中我們同樣可以采用類似的方式來傳遞參數(shù),HTML頁面中插入SWF文件最常用的就是使用Object標簽和Embed標簽結(jié)合的方式,這也是Adobe的推薦方式:
      
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="400" height="300" id="flashvars" align="center">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="movie" value="demo.swf?uid=12&uname=vsky" />
    <param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />
    <embed src="demo.swf?uid=12&uname=vsky" quality="high" bgcolor="#ffffff" width="400" height="300" name="flashvars" align="center" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
    </object>



      其中粗體部分對應(yīng)的就是SWF文件的地址,那么我們可以在這個地址后面通過類似于URL中GET方式傳參的方法來個SWF傳遞參數(shù),例如上面代碼在頁面完全加載完畢時,它已經(jīng)給SWF文件寫入了兩個變量:uid=12和uname=vsky。

      

    二、FlashVars傳遞

      你可以查閱FLASH幫助文檔來看FlashVars的官方定義。其實在HTML語法中,這是一個被很多新手所忽視的屬性,同樣以上面的參數(shù)為例,下面用FlashVars來傳遞變量:

    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="400" height="300" id="flashvars" align="center">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="movie" value="demo.swf" />
    <param name="FlashVars" value="uid=12&uname=vsky" />
    <param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />
    <embed src="demo.swf" FlashVars="uid=12&uname=vsky" quality="high" bgcolor="#ffffff" width="400" height="300" name="flashvars" align="center" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
    </object>


      跟方式一相同,它也是直接給FLASH里添加了這兩個變量。但我個人推薦使用此方式,結(jié)合SWFObject的使用,使用FlashVars來傳遞變量有很多好處,例如代碼清晰,容易管理,瀏覽其兼容,符合標準。他們的結(jié)合使用在“為FLASH程序構(gòu)造靈活的接口”一文中我已經(jīng)做了介紹(PS:隨后我會提供一個復雜點的、有說服力的實際應(yīng)用來說明這種靈活接口的使用)。
      

    三、JS控制

      對于客戶端頁面中的資源,JS通過DOM結(jié)構(gòu)來控制它們可以說是隨心所欲的,F(xiàn)LASH也不例外,下面是Flash Player的Javascript方法一覽表:


    Play() —————————————- 播放動畫
    StopPlay()————————————停止動畫
    IsPlaying()———————————– 動畫是否正在播放
    GotoFrame(frame_number)—————- 跳轉(zhuǎn)到某幀
    TotalFrames()——————————- 獲取動畫總幀數(shù)
    CurrentFrame()——————————回傳當前動畫所在幀數(shù)-1
    Rewind()————————————-使動畫返回第一幀
    SetZoomRect(left,top,right,buttom)——-放大指定區(qū)域
    Zoom(percent)——————————改變動畫大小
    Pan(x_position,y_position,unit)————使動畫在x,y方向上平移
    PercentLoaded()—————————-返回動畫被載入的百分比
    LoadMovie(level_number,path)———– 加載動畫
    TGotoFrame(movie_clip,frame_number)- movie_clip跳轉(zhuǎn)到指定幀數(shù)
    TGotoLabel(movie_clip,label_name)—— movie_clip跳轉(zhuǎn)到指定標簽
    TCurrentFrame(movie_clip)————— 回傳movie_clip當前幀-1
    TCurrentLabel(movie_clip)—————–回傳movie_clip當前標簽
    TPlay(movie_clip)—————————播放movie_clip
    TStopPlay(movie_clip)———————-停止movie_clip的播放
    GetVariable(variable_name)—————–獲取變量
    SetVariable(variable_name,value)———–變量賦值
    TCallFrame(movie_clip,frame_number)—call指定幀上的action
    TCallLabel(movie_clip,label)—————-call指定標簽上的action
    TGetProperty(movie_clip,property)——–獲取movie_clip的指定屬性
    TSetProperty(movie_clip,property,number)———-設(shè)置movie_clip的指定屬性



      在這里我們只需要使用的是粗體標識的SetVariable方法,JS通過調(diào)用此方法能夠直接更改SWF中的變量值。首先我們需要定義插入的SWF的ID,例如id為VskyDemo,那么我們可以通過下面的JS語句來完成SWF內(nèi)部變量的設(shè)置:

    window.document.VskyDemo.SetVariable("uid", 12);


      很簡單吧,就是這樣的。除非是涉及到了HTML中SWF之外元素跟它交互,否則我一般不使用JS來控制SWF里的變量,因為我總覺得怪怪的,呵呵,個人習慣吧。
      多多實踐,不要覺得這些小東西不起眼,小東西多了,聚結(jié)到一起了就是一個大的應(yīng)用。
      條條大路通北京,選擇你自己喜歡的,自己認為便捷的方式就可以了,目前我是沒有發(fā)現(xiàn)這三個方式存在功能上的缺陷。


    ======================================================================================

    前言、JavaScript和Macromedia Flash的通信示例

    原文地址: http://www.macromedia.com/support/flash/ts/documents/java_script_comm.htm
    說明: 略作修改,主要是一些很初級的操作; 又很多相似的文章,不過這個很權(quán)威

    下面是一些在Flash和使用Javascript的HTML文件直接通信的示例,每個示例都有簡略的步驟

    本文討論了3種基本的Flash/Javascript通信方式:
    Javascript 到 Flash的通信----使用Flash播放器的javascript方法
    Flash 到 Javascript的通信----使用Flash的fscommand
    Flash 到 Flash的通信----------使用本地連接對象或綜合上2種技術(shù)

    并不是所有的瀏覽器都很重視腳本.為了和Flash播放器通信,瀏覽器必須有內(nèi)置的鉤子以便Flash播放器可以'監(jiān)聽'.瀏覽器必須是下列的幾種:
    Netscape Navigator 3.0-4.7x, 和 Netscape 6.2或更高
    (Windows 95/98/NT/2000/XP 或 MacOS; 允許Java和LiveConnect)
    Internet Explorer 3.0 或更高
    (僅Windows 95/98/NT/2000/XP; 允許ActiveX)

    注意:Macintosh上的Internet Explorer和早期版本的Netscape6不支持這種方法.請查看本文的附加信息

    一、Javascript到Flash的通信

    這個例子演示了如何使用Flash的method把變量從HTML的input text 發(fā)送到該頁面中的Flash文件中.HTML input的數(shù)據(jù)通過Flash的SetVariable方法傳送到Flash文件中.

    查看示例:示例
    下載源文件: javascript_to_flash.zip(17k)

    步驟:

    Flash中
    1.新建一個文件,保存為javascript_to_flash.fla
    2.用文字工具在舞臺上創(chuàng)建一個文本域
    3.選擇這個文本域,在屬性面板中,從下拉列表中選擇動態(tài)文本(Dynamic Text),在變量(variable)欄填上"myVar"
    注意:最好的習慣是使用Instance,用myVar.text更改myVar的值.為了簡單起見和兼容Flash4和Flash5,我們使用的是變量名的形式.
    4.保存文件
    5.發(fā)布HTML文件和SWF文件

    Dreamweaver中
    下一步的工作轉(zhuǎn)移到Dreamweaver中了,當然也可以是其他的HTML編輯器
    1.打開上一步發(fā)布的HTML文件
    2.插入生成的SWF文件和OBJECT/EMBED標簽
    (1) Insert>Media>Flash,并選擇這個Flash
    (2) 切換到代碼視圖,我們需要修改被選中的<OBJECT>和<EMBED>標簽
    (3) 在OBJECT標簽中,插入id="myFlash"

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
    codebase="http://download.macromedia.com/pub/shockwave/cabs/
    flash/swflash.cab#version=5,0,0,0" 
     width=366 height=142 id="myFlash">

    注意:如果你是粘貼復制代碼的話,確保刪除不必要的換行.否則可能會引起錯誤; id也可以在屬性面板里直接輸入
    (4) 在EMBED標簽中,插入name="myFlash"和swLiveConnect="true",確保沒有使用id屬性!代碼應(yīng)當是這樣子的:

    <embed src="javascript_to_flash.swf" quality=high width=366 height=142
    type="application/x-shockwave-flash"
    pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?
    P1_Prod_Version=ShockwaveFlash"
    name="myFlash" swLiveConnect="true">
    </embed> 

    3.創(chuàng)建表單域
    (1) 回到設(shè)計視圖
    (2) 插入文本域(Insert> Form Object> Text Field),如果詢問是否添加表單域,選擇是
    (3) 把文本域的HTML標簽修改成這樣:

    <input type="text" name="sendText" maxlength="45"
    onChange="doPassVar(this)">

    每當文本域內(nèi)容發(fā)生變化時,onChange就被觸發(fā),doPassVar()函數(shù)就被調(diào)用

    4.創(chuàng)建傳遞變量值的Javascript函數(shù)
    復制下面的Javascript到<head></head>標簽內(nèi)

    <SCRIPT LANGUAGE=JavaScript>
    <!--
    function doPassVar(args){
    var sendText = args.value;
    window.document.myFlash.SetVariable("myVar", sendText);
    }
    //-->
    </SCRIPT>

    5.保存文件,測試一下(F12)

    二、Flash到Javascript的通信

    從HTML可以發(fā)送數(shù)據(jù)到Flash,反過來也可以. 這個例子演示了如何應(yīng)用Flash的Fscommand來發(fā)送數(shù)據(jù)到Javascript.

    查看示例:示例2
    下載源文件: flash_to_javascript.zip(10K)

    簡要步驟:
    Flash中
    新建一個文件,保存為flash_to_javascript.fla
    創(chuàng)建一個文本域,設(shè)置成輸入文本(Input Text),選擇"border"以便我們能看到他,指定他的變量為inputVar
    創(chuàng)建一個按鈕,在按鈕上添加如下的as:

    on (release) {
    fscommand ("send_var", inputVar);
    }

    保存文件,導出HTML和SWF

    Dreamweaver中
    1.打開導出HTML文件,修改<OBJECT>和<EMBED>標簽,結(jié)果同上:

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
    codebase="http://download.macromedia.com/pub/shockwave/cabs/
    flash/swflash.cab#version=5,0,0,0"
    width=366 height=142 id="myFlash">
    <embed src="javascript_to_flash.swf" quality=high
    width=366 height=142
    type="application/x-shockwave-flash"
    pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?
    P1_Prod_Version=ShockwaveFlash" name="myFlash" swLiveConnect="true">
    </embed>

    2. 插入如下的Javascript到<Body>標簽內(nèi):

    <SCRIPT LANGUAGE=JavaScript>
    <!--
    var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
    function myFlash_DoFSCommand(command, args) {
       var myFlashObj = InternetExplorer ? myFlash : document.myFlash;
       alert (args);
    }
    if (navigator.appName && navigator.appName.indexOf("Microsoft")
    != -1 &&
    navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows
    3.1") == -1) {
    document.write('<SCRIPT LANGUAGE=VBScript\> \n');
    document.write('on error resume next \n');
    document.write('Sub myFlash_FSCommand(ByVal command, ByVal args)\n');
    document.write(' call myFlash_DoFSCommand(command, args)\n');
    document.write('end sub\n');
    document.write('</SCRIPT\> \n');
    }
    //-->
    </SCRIPT> 

    三、Flash和Flash的通信

    通過上面兩種方法的混和使用,同一HTML中兩個或者更多的Flash直接可以相互傳送消息. 從一個flash使用fscommand傳送消息給Javascript,使用Flash的Javascript methods把消息傳給另外一個flash

    詳細的看這里:Flash影片之間的通信示例

    從Flash MX開始,local connection對象可以用來在flash之間傳送消息. 這使得同一HTML中的或者位于兩個瀏覽器窗口中的兩個flash影片可以相互發(fā)送消息,而不必使用Javascript或者fscommand
    詳細的看這里:在Flash MX中使用local connection對象(英文)

    本站的localConnection教程:http://www.flashempire.com/school/tutorview.php?id=327

    附可控制Flash Player的Javascript方法:
    一覽表:
    Play() ---------------------------------------- 播放動畫
    StopPlay()------------------------------------停止動畫
    IsPlaying()----------------------------------- 動畫是否正在播放
    GotoFrame(frame_number)---------------- 跳轉(zhuǎn)到某幀
    TotalFrames()------------------------------- 獲取動畫總幀數(shù)
    CurrentFrame()------------------------------回傳當前動畫所在幀數(shù)-1
    Rewind()-------------------------------------使動畫返回第一幀
    SetZoomRect(left,top,right,buttom)-------放大指定區(qū)域
    Zoom(percent)------------------------------改變動畫大小
    Pan(x_position,y_position,unit)------------使動畫在x,y方向上平移
    PercentLoaded()----------------------------返回動畫被載入的百分比
    LoadMovie(level_number,path)----------- 加載動畫
    TGotoFrame(movie_clip,frame_number)- movie_clip跳轉(zhuǎn)到指定幀數(shù)
    TGotoLabel(movie_clip,label_name)------ movie_clip跳轉(zhuǎn)到指定標簽
    TCurrentFrame(movie_clip)--------------- 回傳movie_clip當前幀-1
    TCurrentLabel(movie_clip)-----------------回傳movie_clip當前標簽
    TPlay(movie_clip)---------------------------播放movie_clip
    TStopPlay(movie_clip)----------------------停止movie_clip的播放
    GetVariable(variable_name)-----------------獲取變量
    SetVariable(variable_name,value)-----------變量賦值
    TCallFrame(movie_clip,frame_number)---call指定幀上的action
    TCallLabel(movie_clip,label)----------------call指定標簽上的action
    TGetProperty(movie_clip,property)--------獲取movie_clip的指定屬性
    TSetProperty(movie_clip,property,number)-設(shè)置movie_clip的指定屬


    posted @ 2007-12-18 18:00 Q系列類、方法、變量…… 閱讀(2953) | 評論 (2)編輯 收藏
    alter table admin                #<---- 表名
       add CONSTRAINT `xxid_fk`      #<---- 復合主鍵名稱
          FOREIGN KEY (`xxid`)       #<---- 表字段名
            REFERENCES `club`(`id`)  #<---- 外鍵表名+字段名
    posted @ 2007-04-13 15:15 Q系列類、方法、變量…… 閱讀(297) | 評論 (0)編輯 收藏

    動態(tài)圖片新聞,JS實現(xiàn).


    <script language="JavaScript">
    var imgUrl=new Array();
    var imgLink=new Array();
    var imgText=new Array();
    var picNum=0;
    imgUrl[1]="圖片地址一";
    imgLink[1]="鏈接1";
    imgText[1]="標題或簡介或其它HTML內(nèi)容1";
    imgUrl[2]="圖片地址二";
    imgLink[2]="鏈接2";
    imgText[2]="標題或簡介或其它HTML內(nèi)容2";
    imgUrl[3]="圖片地址三";
    imgLink[3]="鏈接3";
    imgText[3]="標題或簡介或其它HTML內(nèi)容3";
    imgUrl[4]="圖片地址四";
    imgLink[4]="鏈接4";
    imgText[4]="標題或簡介或其它HTML內(nèi)容4";
    imgUrl[5]="圖片地址五";
    imgLink[5]="鏈接5";
    imgText[5]="標題或簡介或其它HTML內(nèi)容5";


    function NextPic(){
    ??? if(picNum<4) picNum++ ;//顯示4個圖片
    ??? else picNum=1;
    ??? if (document.all){
    ??????? //下面注意,如果存在于FORM表單中,需要使用下面的方法,否則可直接使用name。
    ??????? document.imgInit.filters.revealTrans.Transition=Math.floor(Math.random()*23);
    ??????? document.imgInit.filters.revealTrans.apply();
    ??????? document.imgInit.filters.revealTrans.play();
    ??? }
    ??? document.images.imgInit.src=imgUrl[picNum];
    ??? //如果不是圖片,而是SWF等,可做判斷,內(nèi)容可在程序中做好,再放于下面。
    ??? focustext.innerHTML='<a href='+imgLink[picNum]+' target=_blank>'+imgText[picNum]+'</a>';
    ??? //設(shè)置翻頁時間
    ??? theTimer=setTimeout('NextPic()', 3000);
    }


    function goUrl(){
    ??? window.open(imgLink[picNum],'_blank');
    }
    </script>


    HTML代碼中:
    可以做到控件中
    <TABLE cellPadding=0 width=100% border=0>
    ??????? <TR>
    ????????? <TD align=middle height="140" >
    <div align='center'>
    <a href='javascript:goUrl()'><img style="FILTER: revealTrans(duration=2,Transition=5)" src="javascript:NextPic()" width="170" height="120" border="1"? id=imgInit name=imgInit></a></TD></TR>
    <TR><TD align=middle height="38" ><div name=focustext id=focustext align='center'></div>
    </div>
    </TD></TR></TABLE>

    posted @ 2007-01-25 15:25 Q系列類、方法、變量…… 閱讀(2662) | 評論 (1)編輯 收藏
    生活規(guī)律34條
    1.不說“不可能”。
    2.凡事第一反應(yīng):找方法,而不是找借口。
    3.遇到挫折對自己大聲說:太棒了!
    4.不說消極的話,不落入消極情緒,一旦出現(xiàn)立即正面處理。
    5.凡事先訂立目標,并且盡量制作“夢想版”。
    6.凡事預先作計劃,盡量將目標視覺化。
    7.每一分,每一秒都做有用的事情。
    8.隨時用零碎的時間(如等人、排隊等)做零碎的小活。
    9.守時。
    10.不要太依靠腦袋記憶,好腦子不如爛筆頭。
    11.隨時記錄靈感。
    12.把重要的觀念、方法寫下來,并貼起來,隨時提示自己。
    13.走路比平時快30%。走路時,腳尖稍用力推進;肢體語言健康有力,不懶散、萎靡。
    14.每天出門照鏡子,給自己一個自信的笑容。
    15.每天自我反省一次。
    16.每天堅持一次運動。
    17.聽心跳1分鐘(在做重要事前、疲勞時、心情煩躁時、緊張時)。
    18.開會坐在前排。
    19.微笑。
    20.用心傾聽,不打斷對方說話。
    21.說話時,聲音有力。感覺自己聲音似乎能產(chǎn)生有感染力的磁場。
    22.說話之前,先考慮一下對方的感受。
    23.每天有意識、真誠地贊美別人3次以上。
    24.及時寫感謝卡,哪怕是用便箋寫。
    25.不用訓斥、指責的口吻跟別人說話。
    26.控制自己,遇事第一反應(yīng)是不要為自己辯解。
    27.每天多做一件“分外事”。
    28.不管任何方面,每天必須至少做一次“進步一點點”。
    29.每天提前15分鐘上班,推遲30分鐘下班。
    30.每天在下班前用5分鐘的時間做一天的整理性工作。
    31.定期存錢。
    32.節(jié)儉。
    33.時常運用“頭腦風暴”。
    34.恪守誠信,說到做到。
    posted @ 2007-01-25 15:24 Q系列類、方法、變量…… 閱讀(302) | 評論 (0)編輯 收藏

    Apache服務(wù)器的設(shè)置文件位于/usr/local/apache/conf/目錄下,傳統(tǒng)上使用三個配置文件httpd.conf,access.conf和srm.conf,來配置Apache服務(wù)器的行為。

    ??? httpd.conf提供了最基本的服務(wù)器配置,是對守護程序httpd如何運行的技術(shù)描述;srm.conf是服務(wù)器的資源映射文件,告訴服務(wù)器各種文件的MIME類型,以及如何支持這些文件;access.conf用于配置服務(wù)器的訪問權(quán)限,控制不同用戶和計算機的訪問限制;這三個配置文件控制著服務(wù)器的各個方面的特性,因此為了正常運行服務(wù)器便需要設(shè)置好這三個文件。

      除了這三個設(shè)置文件之外,Apache還使用mime.types文件用于標識不同文件
    對應(yīng)的MIME類型, magic文件設(shè)置不同MIME類型文件的一些特殊標識,使得 Apache 服務(wù)器從文檔后綴不能判斷出文件的MIME 類型時,能通過文件內(nèi)容中的這些特殊標記來判斷文檔的MIME類型。

    bash-2.02$ ls -l /usr/local/apache/conf
    total 100
    -rw-r--r-- 1 root wheel 348 Apr 16 16:01 access.conf
    -rw-r--r-- 1 root wheel 348 Feb 13 13:33 access.conf.default
    -rw-r--r-- 1 root wheel 30331 May 26 08:55 httpd.conf
    -rw-r--r-- 1 root wheel 29953 Feb 13 13:33 httpd.conf.default
    -rw-r--r-- 1 root wheel 12441 Apr 19 15:42 magic
    -rw-r--r-- 1 root wheel 12441 Feb 13 13:33 magic.default
    -rw-r--r-- 1 root wheel 7334 Feb 13 13:33 mime.types
    -rw-r--r-- 1 root wheel 383 May 13 17:01 srm.conf
    -rw-r--r-- 1 root wheel 357 Feb 13 13:33 srm.conf.default

      事實上當前版本的Apache將原來httpd.conf、srm.conf與access.conf中的所有配置參數(shù)均放在了一個配置文件 httpd.conf中,只是為了與以前的版本兼容的原因(使用這三個設(shè)置文件的方式來源于NCSA-httpd),才使用三個配置文件。而提供的 access.conf和srm.conf文件中沒有具體的設(shè)置。

      由于在新版本的Apache中,所有的設(shè)置都被放在了httpd.conf中,因此只需要調(diào)整這個文件中的設(shè)置。以下使用缺省提供的httpd.conf為例,解釋Apache服
    務(wù)器的各個設(shè)置選項。然而不必因為它提供設(shè)置的參數(shù)太多而煩惱,基本上這些
    參數(shù)都很明確,也可以不加改動運行Apache服務(wù)器。但如果需要調(diào)整Apache服務(wù)
    器的性能,以及增加對某種特性的支持,就需要了解這些設(shè)置參數(shù)的含義。

      關(guān)于Apache服務(wù)器的性能,在Internet上存在很大的爭議,基本上使用Apache的使用者幾乎都不懷疑它的優(yōu)秀性能,Apache也支撐了很多著名的高負載的網(wǎng)站,但是在商業(yè)機構(gòu)的評測中,Apache往往得分不高。很多人指出,在這些評測中,商業(yè)Web服務(wù)器及其操作系統(tǒng)往往由其專業(yè)公司的工程師進行過性能調(diào)整,而Free 的操作系統(tǒng)和Web服務(wù)器往往就使用其缺省配置或僅僅作很小的更改。需要指出的是,除了操作系統(tǒng)的性能調(diào)整之外,Apache 服務(wù)器本身的缺省配置絕不是最優(yōu)化和最高效的,而是要適應(yīng)幾乎所有種類操作系統(tǒng)、所有種類硬件下的設(shè)置,多平臺的軟件不可能為特定平臺和特定硬件提供最優(yōu)化的缺省配置。因此要使用Apache的時候,性能調(diào)整是必不可少的。

      在商業(yè)評測中忽略了的另一個事實是,評測時往往對不同種類的功能進行比
    較,例如使用Apache的標準CGI 的性能與ISAPI,NSAPI等服務(wù)器端API比較,事實上Apache服務(wù)器與此可以比較的功能為modperl ,F(xiàn)astCGI,與ASP類似的功能為PHP等等,只不過由于Apache的開放模式,這些功能是由獨立的開發(fā)組,作為獨立的模塊來實現(xiàn)的。但是在評測中,測試人員沒有加入相應(yīng)的模塊評測其性能。

    HTTP守護進程的運行參數(shù)

      httpd.conf中首先定義了一些httpd守護進程運行時需要的參數(shù),來決定其運行方式和運行環(huán)境。

      ServerType standalone
      ServerType定義服務(wù)器的啟動方式,缺省值為獨立方式standalone,httpd
    服務(wù)器將由其本身啟動,并駐留在主機中監(jiān)視連接請求。在Linux下將在啟動文件 /etc/rc.d/rc.local/init.d/apache中自動啟動Web服務(wù)器,這種方式是推薦設(shè)置。
      啟動Apache服務(wù)器的另一種方式是inet方式,使用超級服務(wù)器inetd監(jiān)視連接請求并啟動服務(wù)器。當需要使用inetd啟動方式時,便需要更改為這個設(shè)置,并屏蔽/etc/rc.d/rc.local/init.d/apache文件,以及更改/etc/inetd.conf并重起 inetd,那么Apache就能從inetd中啟動了。
      兩種方式的區(qū)別是獨立方式是由服務(wù)器自身管理自己的啟動進程,這樣在啟
    動時能立即啟動服務(wù)器的多個副本,每個副本都駐留在內(nèi)存中,一有連接請求不需要生成子進程就可以立即進行處理,對于客戶瀏覽器的請求反應(yīng)更快,性能較
    高。而 inetd方式要由inetd發(fā)現(xiàn)有連接請求后才去啟動http服務(wù)器,由于inetd 要監(jiān)聽太多的端口,因此反應(yīng)較慢、效率較低,但節(jié)約了沒有連接請求時Web服務(wù)器占用的資源。因此inetd方式只用于偶爾被訪問并且不要求訪問速度的服務(wù)器上。事實上inetd方式不適合http的突發(fā)和多連接的特性,因為一個頁面可能包含多個圖象,而每個圖象都會引起一個連接請求,即使雖然訪問人數(shù)造成教少,但瞬間的連接請求并不少,這就受到inetd性能的限制,甚至會影響由inetd啟動的其他服務(wù)器程序。

      ServerRoot "/usr/local"
      ServerRoot用于指定守護進程httpd的運行目錄,httpd在啟動之后將自動將
    進程的當前目錄改變?yōu)檫@個目錄,因此如果設(shè)置文件中指定的文件或目錄是相對
    路徑,那么真實路徑就位于這個ServerRoot定義的路徑之下。
      由于httpd會經(jīng)常進行并發(fā)的文件操作,就需要使用加鎖的方式來保證文件操作不沖突,由于NFS文件系統(tǒng)在文件加鎖方面能力有限,因此這個目錄應(yīng)該是本地磁盤文件系統(tǒng),而不應(yīng)該使用NFS文件系統(tǒng)。

      #LockFile /var/run/httpd.lock
      LockFile參數(shù)指定了httpd守護進程的加鎖文件,一般不需要設(shè)置這個參數(shù), Apache服務(wù)器將自動在ServerRoot下面的路徑中進行操作。但如果ServerRoot為NFS文件系統(tǒng),便需要使用這個參數(shù)指定本地文件系統(tǒng)中的路徑。

      PidFile /var/run/httpd.pid
      PidFile指定的文件將記錄httpd守護進程的進程號,由于httpd能自動復制其自身,因此系統(tǒng)中有多個httpd進程,但只有一個進程為最初啟動的進程,它為其他進程的父進程,對這個進程發(fā)送信號將影響所有的httpd進程。PidFILE定義的文件中就記錄httpd父進程的進程號。

      ScoreBoardFile /var/run/httpd.scoreboard
      httpd使用ScoreBoardFile來維護進程的內(nèi)部數(shù)據(jù),因此通常不需要改變這個參數(shù),除非管理員想在一臺計算機上運行幾個Apache服務(wù)器,這時每個Apache服務(wù)器都需要獨立的設(shè)置文件htt pd.conf,并使用不同的ScoreBoardFile。

      #ResourceConfig conf/srm.conf
      #AccessConfig conf/access.conf
      這兩個參數(shù)ResourceConfig和AccessConfig,就用于和使用 srm.conf 和 access.conf 設(shè)置文件的老版本Apache兼容。如果沒有兼容的需要,可以將對應(yīng)的設(shè)置文件指定為/dev/null,這將表示不存在其他設(shè)置文件,而僅使用 httpd.conf 一個文件來保存所有的設(shè)置選項。

      Timeout 300
      Timeout定義客戶程序和服務(wù)器連接的超時間隔,超過這個時間間隔(秒)后服務(wù)器將斷開與客戶機的連接。

      KeepAlive On
      在HTTP 1.0中,一次連接只能作傳輸一次HTTP請求,而KeepAlive參數(shù)用于支持HTTP 1.1版本的一次連接、多次傳輸功能,這樣就可以在一次連接中傳遞多個HTTP請求。雖然只有較新的瀏覽器才支持這個功能,但還是打開使用這個選項。

      MaxKeepAliveRequests 100
      MaxKeepAliveRequests為一次連接可以進行的HTTP請求的最大請求次數(shù)。將
    其值設(shè)為0將支持在一次連接內(nèi)進行無限次的傳輸請求。事實上沒有客戶程序在一次連接中請求太多的頁面,通常達不到這個上限就完成連接了。

      KeepAliveTimeout 15
      KeepAliveTimeout測試一次連接中的多次請求傳輸之間的時間,如果服務(wù)器
    已經(jīng)完成了一次請求,但一直沒有接收到客戶程序的下一次請求,在間隔超過了
    這個參數(shù)設(shè)置的值之后,服務(wù)器就斷開連接。

      MinSpareServers 5MaxSpareServers 10
      在使用子進程處理HTTP請求的Web服務(wù)器上,由于要首先生成子進程才能處理客戶的請求,因此反應(yīng)時間就有一點延遲。但是,Apache服務(wù)器使用了一個特殊技術(shù)來擺脫這個問題,這就是預先生成多個空余的子進程駐留在系統(tǒng)中,一旦有請求出現(xiàn),就立即使用這些空余的子進程進行處理,這樣就不存在生成子進程造成的延遲了。在運行中隨著客戶請求的增多,啟動的子進程會隨之增多,但這些服務(wù)器副本在處理完一次HTTP請求之后并不立即退出,而是停留在計算機中等待下次請求。但是空余的子進程副本不能光增加不減少,太多的空余子進程沒有處理任務(wù),也占用服務(wù)器的處理能力,因此也要限制空余副本的數(shù)量,使其保持一個合適的數(shù)量,使得既能及時回應(yīng)客戶請求,又能減少不必要的進程數(shù)量。
      因此就可以使用參數(shù)MinSpareServers來設(shè)置最少的空余子進程數(shù)量, 以及
    使用參數(shù)MaxSpareServers 來限制最多的空閑子進程數(shù)量,多余的服務(wù)器進程副
    本就會退出。根據(jù)服務(wù)器的實際情況來進行設(shè)置,如果服務(wù)器性能較高,并且也
    被頻繁訪問,就應(yīng)該增大這兩個參數(shù)的設(shè)置。對于高負載的專業(yè)網(wǎng)站,這兩個值
    應(yīng)該大致相同,并且等同于系統(tǒng)支持的最多服務(wù)器副本數(shù)量,也減少不必要的副
    本退出。

      StartServers 5
      StartServers參數(shù)就是用來設(shè)置httpd啟動時啟動的子進程副本數(shù)量,這個參數(shù)與上面定義的MinSpareServers和 MaxSpareServers參數(shù)相關(guān),都是用于啟動空閑子進程以提高服務(wù)器的反應(yīng)速度的。這個參數(shù)應(yīng)該設(shè)置為前兩個值之間的一個數(shù)值,小于 MinSpareServers和大于MaxS pareServers都沒有意義。

      MaxClients 150
      在另一方面,服務(wù)器的能力畢竟是有限的,不可能同時處理無限多的連接請
    求,因此參數(shù)Maxclient s就用于規(guī)定服務(wù)器支持的最多并發(fā)訪問的客戶數(shù),如果這個值設(shè)置得過大,系統(tǒng)在繁忙時不得不在過多的進程之間進行切換來為太多的客戶進行服務(wù),這樣對每個客戶的反應(yīng)就會減慢,并降低了整體的效率。如果這個值設(shè)置的較小,那么系統(tǒng)繁忙時就會拒絕一些客戶的連接請求。當服務(wù)器性能較高時,就可以適當增加這個值的設(shè)置。對于專業(yè)網(wǎng)站,應(yīng)該使用提高服務(wù)器效率的策略,因此這個參數(shù)不能超過硬件本身的限制,如果頻繁出現(xiàn)拒絕訪問現(xiàn)象,就說明需要升級服務(wù)器硬件了。對于非專業(yè)網(wǎng)站,不太在意對客戶瀏覽器的反應(yīng)速度,或者認為反應(yīng)速度較慢也比拒絕連接好,就也可以略微超過硬件條件來設(shè)置這個參數(shù)。
      這個參數(shù)限制了MinSpareServers和MaxSpareServers的設(shè)置,它們不應(yīng)該大
    于這個參數(shù)的設(shè)置。

      MaxRequestsPerChild 30
      使用子進程的方式提供服務(wù)的Web服務(wù),常用的方式是一個子進程為一次連接服務(wù),這樣造成的問題就是每次連接都需要生成、退出子進程的系統(tǒng)操作,使得這些額外的處理過程占據(jù)了計算機的大量處理能力。因此最好的方式是一個子進程可以為多次連接請求服務(wù),這樣就不需要這些生成、退出進程的系統(tǒng)消耗, Apache就采用了這樣的方式,一次連接結(jié)束后,子進程并不退出,而是停留在系統(tǒng)中等待下一次服務(wù)請求,這樣就極大的提高了性能。
      但由于在處理過程中子進程要不斷的申請和釋放內(nèi)存,次數(shù)多了就會造成一
    些內(nèi)存垃圾,就會影響系統(tǒng)的穩(wěn)定性,并且影響系統(tǒng)資源的有效利用。因此在一個副本處理過一定次數(shù)的請求之后,就可以讓這個子進程副本退出,再從原始的
    httpd進程中重新復制一個干凈的副本,這樣就能提高系統(tǒng)的穩(wěn)定性。這樣,每
    個子進程處理服務(wù)請求次數(shù)由MaxRe questPerChild定義。 缺省的設(shè)置值為30,
    這個值對于具備高穩(wěn)定性特點的Linux系統(tǒng)來講是過于保守的設(shè)置,可以設(shè)置為1000甚至更高,設(shè)置為0支持每個副本進行無限次的服務(wù)處理。

      #Listen 3000
      #Listen 12.34.56.78:80
      #BindAddress *
      Listen參數(shù)可以指定服務(wù)器除了監(jiān)視標準的80端口之外,還監(jiān)視其他端口的
    HTTP請求。由于FreeBSD系統(tǒng)可以同時擁有多個IP地址,因此也可以指定服務(wù)器只聽取對某個BindAddress< /B>的IP地址的HTTP請求。如果沒有配置這一項,則服務(wù)器會回應(yīng)對所有IP的請求。
      即使使用了BindAddress參數(shù),使得服務(wù)器只回應(yīng)對一個IP地址的請求,但是通過使用擴展的Listen參數(shù),仍然可以讓HTTP守護進程回應(yīng)對其他IP地址的請求。此時Listen參數(shù)的用法與上面的第二個例子相同。這種比較復雜的用法主要用于設(shè)置虛擬主機。此后可以用 VirtualHost參數(shù)定義對不同IP的虛擬主機,然而這種用法是較早的HTTP 1.0標準中設(shè)置虛擬主機的方法,每針對一個虛擬主機就需要一個IP地址,實際上用處并不大。在HTTP 1.1中,增加了對單IP地址多域名的虛擬主機的支持,使得虛擬主機的設(shè)置具備更大的意義。

    LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
    LoadModule info_module libexec/apache/mod_info.so
    LoadModule speling_module libexec/apache/mod_speling.so
    LoadModule proxy_module libexec/apache/libproxy.so
    LoadModule rewrite_module libexec/apache/mod_rewrite.so
    LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
    LoadModule db_auth_module libexec/apache/mod_auth_db.so
    LoadModule digest_module libexec/apache/mod_digest.so
    LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
    LoadModule expires_module libexec/apache/mod_expires.so
    LoadModule headers_module libexec/apache/mod_headers.so
    LoadModule usertrack_module libexec/apache/mod_usertrack.so
    LoadModule unique_id_module libexec/apache/mod_unique_id.so

    ClearModuleList
    AddModule mod_env.c
    AddModule mod_log_config.c
    AddModule mod_mime_magic.c
    AddModule mod_mime.c
    AddModule mod_negotiation.c
    AddModule mod_status.c
    AddModule mod_info.c
    AddModule mod_include.c
    AddModule mod_autoindex.c
    AddModule mod_dir.c
    AddModule mod_cgi.c
    AddModule mod_asis.c
    AddModule mod_imap.c
    AddModule mod_actions.c
    AddModule mod_speling.c
    AddModule mod_userdir.c
    AddModule mod_proxy.c
    AddModule mod_alias.c
    AddModule mod_rewrite.c
    AddModule mod_access.c
    AddModule mod_auth.c
    AddModule mod_auth_anon.c
    AddModule mod_auth_db.c
    AddModule mod_digest.c
    AddModule mod_cern_meta.c
    AddModule mod_expires.c
    AddModule mod_headers.c
    AddModule mod_usertrack.c
    AddModule mod_unique_id.c
    AddModule mod_so.c
    AddModule mod_setenvif.c

    Apache服務(wù)器的一個重要特性就是其模塊化的結(jié)構(gòu),這不但表現(xiàn)為其能在編
    譯時能通過新的模塊加入新的功能,還表現(xiàn)為其模塊可以動態(tài)加載入http服務(wù)程
    序中,而不必載入不需要的模塊。使用Apache的動態(tài)加載模塊只需要設(shè)置好Load Module和AddModule參數(shù)就可以了,這種特性就是Apache的 DSO(Dynamic Shared Object)特性,然而要想充分使用DSO特性仍然不是一個簡單的事情,不適當?shù)母膭舆@里的設(shè)置就可能造成服務(wù)器不能正常啟動。因此如果不是要增加或減少服務(wù)器提供的功能,就不要改動這里的設(shè)置。

      上面這些列表就顯示了Linux下的缺省Apache服務(wù)器支持的模塊,事實上很
    多模塊是沒有必要的,不必要模塊不會被載入內(nèi)存。模塊可以靜態(tài)連接到Apache 服務(wù)器內(nèi)部,也可以這樣動態(tài)加載,將Apache的特性都編譯成動態(tài)可加載模塊是該Port的做法,而不是Apache的缺省做法,這樣就以犧牲很小的性能的同時,帶來極大的靈活性。

      因而動態(tài)可加載的能力還是對性能有輕微的影響,因此可以重新編譯Apache,將自己所需要的功能編譯進Apache 服務(wù)器內(nèi)部,可以讓系統(tǒng)顯得更為干凈,效率也有輕微的提高。通常僅僅為了這一個目的就重新編譯Apache是沒有必要的,如果需要增加其他特性而重新編譯 Apache,不妨在增加其他模塊的同時將所有的模塊都靜態(tài)連接入Apache 服務(wù)器。有的使用者更喜歡動態(tài)加載模塊,那么也不妨全部都使用動態(tài)加載模塊。

      這些模塊都被放置到/usr/local/apache/libexec/目錄下,每個模塊對應(yīng)Apache服務(wù)器的一個特性。詳細解釋每個模塊的功能需要相當多的篇幅,其中比較重要的特性將在后面相應(yīng)的地方中進行解釋,而具體每個模塊的功能及用法就需要查看Apache的文檔。

      #ExtendedStatus On
      Apache服務(wù)器可以通過特殊的HTTP請求,來報告自身的運行狀態(tài),打開這個
    ExtendedStatus 參數(shù)可以讓服務(wù)器報告更全面的運行狀態(tài)信息。


    主服務(wù)器設(shè)置

      Apache服務(wù)器需要各種設(shè)置,以定義自己使用各種參數(shù)以提供Web服務(wù)。對于使用虛擬主機的情況,除了在虛擬主機的定義項中覆蓋的設(shè)置之外(有的設(shè)置必須重新定義),這里的設(shè)置也是虛擬主機的缺省設(shè)置。

      Port 80
      Port定義了Standalone模式下httpd守護進程使用的端口,標準端口是80。這個選項只對于以獨立方式啟動的服務(wù)器才有效,對于以inetd方式啟動的服務(wù)器則在inetd.conf中定義使用哪個端口。

      在Unix下使用80端口需要root權(quán)限,一些管理員為了安全的原因,認為 httpd 服務(wù)器不可能沒有安全漏洞,因而更愿意使用普通用戶的權(quán)限來啟動服務(wù)器,這樣就不能使用80端口及其他小于1024的端口,而必須使用大于 1024的端口來啟動httpd,一般情況下8000或8080也是常用的端口。而Apache httpd服務(wù)器本身可以在以root權(quán)限打開80端口后再改變?yōu)槠胀ㄓ脩羯矸葸M行運行,這樣就減少了危險性,因而就不需要考慮這個安全問題。但是如果普通用戶也想安裝配置自己的WWW服務(wù)器,那么就不得不使用大于1024的端口。

      User nobody
      Group nogroup
      User和Group配置是Apache的安全保證,Apache在打開端口之后,就將其本身設(shè)置為這兩個選項設(shè)置的用戶和組權(quán)限進行運行,這樣就降低了服務(wù)器的危險性。這個選項也只用于 Standalone模式,inetd模式在inetd.conf中指定運行Apache的用戶。由于服務(wù)器必須執(zhí)行改變身份的setuid()操作,因此初始進程應(yīng)該具備root權(quán)限,如果是使用非root用戶來啟動Aapche,這個配置就不會發(fā)揮作用。
      缺省設(shè)置為nobody和nogroup,這個用戶和組在系統(tǒng)中不擁有文件,保證了服務(wù)器本身和由它啟動的CGI 進程沒有權(quán)限更改文件系統(tǒng)。在某些情況下,例如為了運行CGI與Unix交互,也需要讓服務(wù)器來訪問服務(wù)器上的文件,如果仍然使用nobody和 nogroup,那么系統(tǒng)中將會出現(xiàn)屬于nobody的文件,這對于系統(tǒng)安全是不利的,因為其他程序也會以nobody和nogroup的權(quán)限執(zhí)行某些操作,就有可能訪問這些nobody擁有的文件,造成安全問題。一般情況下要為Web服務(wù)設(shè)定一個特定的用戶和組,同時在這里更改用戶和組設(shè)置。

      ServerAdmin you@your.address
      配置文件中應(yīng)該改變的也許只有ServerAdmin,這一項用于配置WWW服務(wù)器的管理員的email地址,這將在HTTP服務(wù)出現(xiàn)錯誤的條件下返回給瀏覽器,以便讓Web使用者和管理員聯(lián)系,報告錯誤。習慣上使用服務(wù)器上的webmaster作為WWW服務(wù)器的管理員,通過郵件服務(wù)器的別名機制,將發(fā)送到webmaster 的電子郵件發(fā)送給真正的Web管理員。

      #ServerName new.host.name
      缺省情況下,并不需要指定這個ServerName參數(shù),服務(wù)器將自動通過名字解
    析過程來獲得自己的名字,但如果服務(wù)器的名字解析有問題(通常為反向解析不
    正確),或者沒有正式的DNS名字,也可以在這里指定IP地址。當ServerName設(shè)
    置不正確的時候,服務(wù)器不能正常啟動。
      通常一個Web服務(wù)器可以具有多個名字,客戶瀏覽器可以使用所有這些名字或IP地址來訪問這臺服務(wù)器,但在沒有定義虛擬主機的情況下,服務(wù)器總是以自己的正式名字回應(yīng)瀏覽器。ServerName就定義了Web服務(wù)器自己承認的正式名字,例如一臺服務(wù)器名字(在DNS中定義了A類型)為 exmaple.org.cn,同時為了方便記憶還定義了一個別名(CNAME記錄)為www.exmaple.org.cn,那么Apache自動解析得到的名字就為example.org.cn,這樣不管客戶瀏覽器使用哪個名字發(fā)送請求,服務(wù)器總是告訴客戶程序自己為 example.org.cn。雖然這一般并不會造成什么問題,但是考慮到某一天服務(wù)器可能遷移到其他計算機上,而只想通過更改DNS中的www別名配置就完成遷移任務(wù),所以不想讓客戶在其書簽中使用 Linux 記錄下這個服務(wù)器的地址,就必須使用ServerName來重新指定服務(wù)器的正式名字。

      DocumentRoot "/www/"
      DocumentRoot定義這個服務(wù)器對外發(fā)布的超文本文檔存放的路徑,客戶程序請求的UR L就被映射為這個目錄下的網(wǎng)頁文件。這個目錄下的子目錄,以及使用
    符號連接指出的文件和目錄都能被瀏覽器訪問,只是要在URL上使用同樣的相對目錄名。

      注意,符號連接雖然邏輯上位于根文檔目錄之下,但實際上可以位于計算機
    上的任意目錄中,因此可以使客戶程序能訪問那些根文檔目錄之外的目錄,這在
    增加了靈活性的同時但減少了安全性。Apache在目錄的訪問控制中提供了 FollowSymLinks選項來打開或關(guān)閉支持符號連接的特性。

    Options FollowSymLinks
    AllowOverride None
      Apache服務(wù)器可以針對目錄進行文檔的訪問控制,然而訪問控制可以通過兩
    種方式來實現(xiàn),一個是在設(shè)置文件 httpd.conf(或access.conf)中針對每個目
    錄進行設(shè)置,另一個方法是在每個目錄下設(shè)置訪問控制文件,通常訪問控制文件
    名字為.htaccess。雖然使用這兩個方式都能用于控制瀏覽器的訪問,然而使用配置文件的方法要求每次改動后重新啟動httpd守護進程,比較不靈活,因此主要用于配置服務(wù)器系統(tǒng)的整體安全控制策略,而使用每個目錄下的.htaccess文件設(shè)置具體目錄的訪問控制更為靈活方便。
      Directory語句就是用來定義目錄的訪問限制的,這里可以看出它的標準語法,為一個目錄定義訪問限制。上例的這個設(shè)置是針對系統(tǒng)的根目錄進行的,設(shè)置了允許符號連接的選項FollowSymLinks ,以及使用AllowOverride None表示不允許這個目錄下的訪問控制文件來改變這里進行的配置,這也意味著不用查看這個目錄下的相應(yīng)訪問控制文件。
      由于Apache對一個目錄的訪問控制設(shè)置是能夠被下一級目錄繼承的,因此對
    根目錄的設(shè)置將影響到它的下級目錄。注意由于AllowOverride None的設(shè)置,使
    得Apache服務(wù)器不需要查看根目錄下的訪問控制文件,也不需要查看以下各級目
    錄下的訪問控制文件,直至httpd.conf(或access.conf )中為某個目錄指定了
    允許Alloworride,即允許查看訪問控制文件。由于Apache對目錄訪問控制是采用的繼承方式,如果從根目錄就允許查看訪問控制文件,那么 Apache就必須一級一級的查看訪問控制文件,對系統(tǒng)性能會造成影響。而缺省關(guān)閉了根目錄的這個特性,就使得Apache從httpd.conf中具體指定的目錄向下搜尋,減少了搜尋的級數(shù),增加了系統(tǒng)性能。因此對于系統(tǒng)根目錄設(shè)置AllowOverride None不但對于系統(tǒng)安全有幫助,也有益于系統(tǒng)性能。

    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
      這里定義的是系統(tǒng)對外發(fā)布文檔的目錄的訪問設(shè)置,設(shè)置不同的 AllowOverride選項,以定義配置文件中的目錄設(shè)置和用戶目錄下的安全控制文件的關(guān)系,而Options選項用于定義該目錄的特性。
      配置文件和每個目錄下的訪問控制文件都可以設(shè)置訪問限制,設(shè)置文件是由
    管理員設(shè)置的,而每個目錄下的訪問控制文件是由目錄的屬主設(shè)置的,因此管理
    員可以規(guī)定目錄的屬主是否能覆蓋系統(tǒng)在設(shè)置文件中的設(shè)置,這就需要使用 啊AllowOverride參數(shù)進行設(shè)置,通??梢栽O(shè)置的值為:
    AllowOverride的設(shè)置 對每個目錄訪問控制文件作用的影響
    All 缺省值,使訪問控制文件可以覆蓋系統(tǒng)配置
    None 服務(wù)器忽略訪問控制文件的設(shè)置
    Options 允許訪問控制文件中可以使用Options參數(shù)定義目錄的選項
    FileInfo 允許訪問控制文件中可以使用AddType等參數(shù)設(shè)置
    AuthConfig 允許訪問控制文件使用AuthName,AuthType等針對每個用戶的認證機制,這使目錄屬主能用口令和用戶名來保護目錄 Limit 允許對訪問目錄的客戶機的IP地址和名字進行限制
      每個目錄具備一定屬性,可以使用Options來控制這個目錄下的一些訪問特性設(shè)置,以下為常用的特性選項:

    Options設(shè)置 服務(wù)器特性設(shè)置
    All 所有的目錄特性都有效,這是缺省狀態(tài)
    None 所有的目錄特性都無效
    FollowSymLinks 允許使用符號連接,這將使瀏覽器有可能訪問文檔根目錄 (DocumentRoot)之外的文檔 SymLinksIfOwnerMatch 只有符號連接的目的與符號連接本身為同一用戶所擁有時,才允許訪問,這個設(shè)置將增加一些安全性
    ExecCGI 允許這個目錄下可以執(zhí)行CGI程序 Indexes 允許瀏覽器可以生成這個目錄下所有文件的索引,使得在這個目錄下沒有index.html(或其他索引文件)時,能向瀏覽器發(fā)送這個目錄下的文件列表
     此外,上例中還使用了Order、Allow、Deny等參數(shù),這是Limit語句中用來根據(jù)瀏覽器的域名和 IP地址來控制訪問的一種方式。其中Order定義處理Allow和Deny的順序,而Allow、Deny則針對名字或IP進行訪問控制設(shè)置,上例使用 allowfrom all,表示允許所有的客戶機訪問這個目錄,而不進行任何限制。

      UserDir public_html
      當在一臺Linux上運行Apache服務(wù)器時,這臺計算機上的所有用戶都可以有自己的網(wǎng)頁路徑,形如 http://example.org.cn/~user,使用波浪符號?..褂肈ISABLED作 UserDir的參數(shù)即可。

    #
    # AllowOverride FileInfo AuthConfig Limit
    # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    #
    # Order allow,deny
    # Allow from all
    #
    #
    # Order deny,allow
    # Deny from all
    #
    #

      這里可以看到Directory的另一個用法,即可以通過簡單的模式匹配方法,針對分布在不同目錄下的子目錄定義訪問控制權(quán)限。這樣設(shè)置就需要Apache服務(wù)器對每個路徑進行額外的處理,因此就會降低服務(wù)器的性能,所以缺省情況并沒有打開這種訪問限制。

      這里可以看到另外一個語句Limit,Limit語句就是用來針對具體的請求方法來設(shè)定訪問控制的,其中可以使用GET、POST等各種服務(wù)器支持的請求方法做Lim
    it的參數(shù),來設(shè)定對不同請求方法的訪問限制。一般可以打開對GET、POST、 HEAD三種請求方法,而屏蔽其他的請求方法,以增加安全性。Limit語句中,可以用Order 、Allow、Deny,Allow和Deny中可以使用匹配的方法針對域名和IP進行限制,只是對于域名是從后向前匹配,對于IP地址則從前向后匹配。

      DirectoryIndex index.html
      很多情況下,URL中并沒有指定文檔的名字,而只是給出了一個目錄名。那么Apache服務(wù)器就自動返回這個目錄下由DirectoryIndex定義的文件,當然可以指定多個文件名字,系統(tǒng)會這個目錄下順序搜索。當所有由DirectoryIndex指定的文件都不存在時,Apache服務(wù)器可以根據(jù)系統(tǒng)設(shè)置,生成這個目錄下的所有文件列表,提供用戶選擇。此時該目錄的訪問控制選項中的Indexes選項(Options Indexes )必須打開,以使得服務(wù)器能夠生成目錄列表,否則Apache將拒絕訪問。

      AccessFileName .htaccess
      AccessFileName定義每個目錄下的訪問控制文件的文件名,缺省為.htaccess,可以通過更改這個文件,來改變不同目錄的訪問控制限制。

    Order allow,deny
    Deny from all
      除了可以針對目錄進行訪問控制之外,還可以根據(jù)文件來設(shè)置訪問控制,這
    就是File語句的任務(wù)。使用File 語句,不管文件處于哪個目錄,只要名字匹配,就必須接受相應(yīng)的訪問控制。這個語句對于系統(tǒng)安全比較重要,例如上例將屏蔽所有的使用者不能訪問.htaccess文件,這樣就避免.htaccess中的關(guān)鍵安全信息不至于被客戶獲取。

      #CacheNegotiatedDocs
      缺省情況下如果代理服務(wù)器和Apache服務(wù)器協(xié)商是否緩存其網(wǎng)頁,Apache給
    予否定的回答,不希望自己的網(wǎng)頁被代理服務(wù)器緩存。然而這樣就不能有效的利用代理服務(wù)器的優(yōu)勢,因此可以設(shè)置CacheNegotiatieDocs 選項, 使得代理服務(wù)器可以對網(wǎng)頁進行緩存。然而即使不設(shè)置這個選項,有的代理服務(wù)器(或通過調(diào)整設(shè)置)也能對網(wǎng)頁進行緩存。

      UseCanonicalName On
      打開這個UseCanonicalName是Web服務(wù)器的標準做法,因為客戶發(fā)送的大部分請求都是對本服務(wù)器的引用,這樣服務(wù)器就能使用 ServerName和Port選項的設(shè)置內(nèi)容構(gòu)建完整的URL,并回應(yīng)客戶,使瀏覽器能得到規(guī)范的URL。如果將這個參數(shù)設(shè)置為Off,那么 Apache將使用從客戶請求中獲得服務(wù)器的名字和端口值(支持HTTP 1.1的客戶的請求中將會有這些信息),重新構(gòu)建URL。

      TypesConfig /usr/local/apache/etc/mime.types
      TypeConfig用于設(shè)置保存有不同的MIME類型數(shù)據(jù)的文件名,在Linux下缺省設(shè)置為/usr/local/apache/etc/mime.types。

      DefaultType text/plain
      如果Web服務(wù)器不能決定一個文檔的缺省類型,這通常表示文檔使用了非標準的后綴,那么服務(wù)器就使用 DefaultType定義的MIME類型將文檔發(fā)送給客戶瀏覽器。這里的設(shè)置為text/plain,這樣設(shè)置的問題是,如果服務(wù)器不能判斷出文檔的 MIME,那么大部分情況下這個文檔為一個二進制文檔,但使用 text/plain格式發(fā)送回去,瀏覽器將在內(nèi)部打開它而不會提示保存。因此建議將這個設(shè)置更改為
    application/octet-stream,這樣瀏覽器將提示用戶進行保存。

    MIMEMagicFile /usr/local/apache/etc/magic
      除了從文件的后綴出發(fā)來判斷文件的MIME類型之外,Apache還可以進一步分
    析文件的一些特征,來判斷文件的真實MIME類型。這個功能是由mod_mime_magic 模塊實現(xiàn)的,它需要一個記錄各種MIME類型特征的文件,以進行分析判斷。上面的設(shè)置是一個條件語句,如果載入了這個模塊,就必須指定相應(yīng)的標志文件magic的位置。


    通常連接時,服務(wù)器僅僅可以得到客戶機的IP地址,如果要想獲得客戶機的
    主機名,以進行日志記錄和提供給 CGI程序使用,就需要使用這個 HostnameLookups 選項,將其設(shè)置為On打開DNS反查功能。但是這將使服務(wù)器對每次客戶請求都進行DNS查詢,增加了系統(tǒng)開銷,使得反應(yīng)變慢,因此缺省設(shè)置為使用Off關(guān)閉此選項。關(guān)閉選項之后,服務(wù)器就不會獲得客戶機的主機名,而只能使用IP地址來記錄客戶。

    ErrorLog /var/log/httpd-error.log
    LogLevel warn
    LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent} "" combined
    LogFormat "%h %l %u %t "%r" %>s %b" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent
    #CustomLog /var/log/httpd-access.log common
    #CustomLog /var/log/httpd-referer.log referer
    #CustomLog /var/log/httpd-agent.log agent
    CustomLog /var/log/httpd-access.log combined

      這里定義了系統(tǒng)日志的形式,對于服務(wù)器錯誤記錄, 由ErrorLog、 LogLevel 來定義不同的錯誤日志文件及其記錄內(nèi)容。
      對于系統(tǒng)的訪問日志,缺省使用CustomLog參數(shù)定義日志的位置,缺省使用 combined 參數(shù)指定將所有的訪問日志放在一個文件中,然而也可以將不同種類的訪問日志放在不同的日志記錄文件中,這是通過在 CustomLog中指定不同的記錄類型來完成的。common表示普通的對單頁面請求訪問記錄,referer表示每個頁面的引用記錄,可以看出一個頁面中包含的請求數(shù),agent表示對客戶機的類型記錄,顯然可以將現(xiàn)有的combined 定義的設(shè)置行注釋掉,并使用common、referer和agent作為CustomLog的參數(shù),來為不同種類的日志分別指定日志記錄文件。
      顯然,LogFormat是用于定義不同類型的日志進行記錄時使用的格式, 這里
    使用了以%開頭的宏定義,以記錄不同的內(nèi)容。
      如果這些參數(shù)指定的文件使用的是相對路徑,那么就是相對于ServerRoot的
    路徑。

      ServerSignature On
      一些情況下,例如當客戶請求的網(wǎng)頁并不存在時,服務(wù)器將產(chǎn)生錯誤文檔,
    缺省情況下由于打開了 ServerSignature選項,錯誤文檔的最后一行將包含服務(wù)器的名字、Apache的版本等信息。有的管理員更傾向于不對外顯示這些信息,就
    可以將這個參數(shù)設(shè)置為Off,或者設(shè)置為Email,最后一行將替換為對 ServerAdmin 的Email提示。

    Alias /icons/ "/www/icons/"
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all

      Alias參數(shù)用于將URL與服務(wù)器文件系統(tǒng)中的真實位置進行直接映射,一般的
    文檔將在DocumentRoot 中進行查詢,然而使用Alias定義的路徑將直接映射到相
    應(yīng)目錄下,而不再到DocumentRoot 下面進行查詢。因此Alias可以用來映射一些
    公用文件的路徑,例如保存了各種常用圖標的icons路徑。這樣使得除了使用符號連接之外,文檔根目錄(DocumentRoot)外的目錄也可以通過使用了Alias映射,提供給瀏覽器訪問。
      定義好映射的路徑之后,應(yīng)該需要使用Directory語句設(shè)置訪問限制。

    ScriptAlias /cgi-bin/ "/www/cgi-bin/"
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
      ScriptAlias也是用于URL路徑的映射,但與Alias的不同在于,ScriptAlias 是用于映射CGI程序的路徑,這個路徑下的文件都被定義為CGI程序,通過執(zhí)行它們來獲得結(jié)果,而非由服務(wù)器直接返回其內(nèi)容。缺省情況下CGI程序使用 cgi-bin目錄作為虛擬路徑。

      # Redirect old-URI new-URL
      Redirect參數(shù)是用來重寫URL的,當瀏覽器訪問服務(wù)器上的一個已經(jīng)不存在的資源的時候,服務(wù)器返回給瀏覽器新的URL,告訴瀏覽器從該URL 中獲取資源。這主要用于原來存在于服務(wù)器上的文檔,改變了位置之后,而又希望能使用老URL能訪問到,以保持與以前的URL兼容。

    IndexOptions FancyIndexing
    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
    AddIconByType (TXT,/icons/text.gif) text/*
    AddIconByType (IMG,/icons/image2.gif) image/*
    AddIconByType (SND,/icons/sound2.gif) audio/*
    AddIconByType (VID,/icons/movie.gif) video/*
    AddIcon /icons/binary.gif .bin .exe
    AddIcon /icons/binhex.gif .hqx
    AddIcon /icons/tar.gif .tar
    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
    AddIcon /icons/a.gif .ps .ai .eps
    AddIcon /icons/layout.gif .html .shtml .htm .pdf
    AddIcon /icons/text.gif .txt
    AddIcon /icons/c.gif .c
    AddIcon /icons/p.gif .pl .py
    AddIcon /icons/f.gif .for
    AddIcon /icons/dvi.gif .dvi
    AddIcon /icons/uuencoded.gif .uu
    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
    AddIcon /icons/tex.gif .tex
    AddIcon /icons/bomb.gif core
    AddIcon /icons/back.gif ..
    AddIcon /icons/hand.right.gif README
    AddIcon /icons/folder.gif ^^DIRECTORY^^
    AddIcon /icons/blank.gif ^^BLANKICON^^
    DefaultIcon /icons/unknown.gif
    #AddDescription "GZIP compressed document" .gz
    #AddDescription "tar archive" .tar
    #AddDescription "GZIP compressed tar archive" .tgz
    ReadmeName README
    HeaderName HEADER
    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

    當一個HTTP請求的URL為一個目錄的時候,服務(wù)器返回這個目錄中的索引文件。但如果一個目錄中不存在缺省的索引文件,并且該服務(wù)器又許可顯示目錄文件列表的時候,就會顯示出這個目錄中的文件列表,為了使得這個文件列表能具有可理解性,而不僅僅是一個簡單的列表,就需要前面的這些設(shè)置參數(shù)。
      如果使用了IndexOptions FancyIndexing選項,可以讓服務(wù)器產(chǎn)生的目錄列
    表中針對各種不同類型的文檔引用各種圖標。而哪種文件使用哪種圖標,則使用
    下面的 AddIconByEncoding、AddIconByType以及AddIcon來定義,分別依據(jù)MIME 的編碼、類型以及文件的后綴來判斷使用何種圖標。如果不能確定文檔使用的圖標,就使用 DefaultIcon定義的缺省圖標。
      同樣,使用AddDescription可以為不同類型的文檔加入不同的描述。并且,
    服務(wù)器還在目錄下,查詢使用ReadmeName和HeaderName定義的文件(自動加上 .
    html后綴,如果沒有發(fā)現(xiàn),再使用.txt后綴進行搜索),如果發(fā)現(xiàn)了這些文件,
    就在文件列表之前首先顯示這些文件的內(nèi)容,以使得普通目錄列表具備更大的可
    理解性。
      IndexIgnore讓服務(wù)器在列出文件列表時忽略相應(yīng)的文件, 這里使用模式配
    置的方式定義文件名。

    AddEncoding x-compress Z
    AddEncoding x-gzip gz
      AddEncoding用于告訴一些使用壓縮的MIME類型,這樣可以讓瀏覽器進行解壓縮操作。

    AddLanguage en .en
    AddLanguage fr .fr
    AddLanguage de .de
    AddLanguage da .da
    AddLanguage el .el
    AddLanguage it .it
    LanguagePriority en fr de

      一個HTML文檔可以同時具備多個語言的版本,如對于file1.html文檔可以具
    備file1.html.en、file1.html.fr 等不同的版本,每個語言后綴必須使用 AddLanguage進行定義。這樣服務(wù)器可以針對不同國家的客戶,通過與瀏覽器進行協(xié)商,發(fā)送不同的語言版本。而LanguagePriority 定義不同語言的優(yōu)先級,以便在瀏覽器沒有特殊要求時,按照順序使用不同的語言版本回應(yīng)對file1.html 的請求。
    這個國際化的能力實際的應(yīng)用并不多。

    #AddType application/x-httpd-php .phtml
    #AddType application/x-httpd-php-source .phps
     AddType參數(shù)可以為特定后綴的文件指定MIME類型,這里的設(shè)置將覆蓋 mime.types中的設(shè)置。

      #AddHandler cgi-script .cgi
      AddHandler是用于指定非靜態(tài)的處理類型,用于定義文檔為一個非靜態(tài)的文
    檔類型,需要進行處理,再向瀏覽器返回處理結(jié)果。例如上面注釋中的設(shè)置是將以.cgi結(jié)尾的文件設(shè)置為cgi-script類型,那么服務(wù)器將啟動這個 CGI程序以進行處理。如果需要在前面AliasScript定義的路徑之外執(zhí)行CGI程序,就需要使用這個參數(shù)進行設(shè)置,此后以.cgi結(jié)尾的文件將被當作CGI程序執(zhí)行。

      在配置文件、這個目錄中的.htaccess以及其上級目錄的.htaccess中必須允許執(zhí)行CGI程序,這需要通過Options ExecCGI參數(shù)設(shè)定。

    #AddType text/html .shtml
    #AddHandler server-parsed .shtml
      另外一種動態(tài)進行處理的類型為server-parsed,由服務(wù)器自身預先分析網(wǎng)頁內(nèi)的標記,將標記更改為正確的HTML標識。由于server- parsed需要對text/html 類型的文檔進行處理,因此首先定義了對應(yīng)的.shtml為text/html類型。
      然而要支持SSI,還要首先要在配置文件(或.htaccess)中使用Options Includes允許該目錄下的文檔可以為SSI類型,或使用Options IncludesNOExec讓執(zhí)行普通的SSI標志,但不執(zhí)行其中引用的外部程序。

      另一種指定server-parsed類型的方式為使用XBitBack設(shè)置選項,如果將 XBitHack設(shè)置為On,服務(wù)器將檢查所有text/html類型的文檔(包括.html后綴的文檔),如果發(fā)現(xiàn)文件屬性具備執(zhí)行位 “x",則服務(wù)器就認為它是服務(wù)器分析文檔,需要服務(wù)器進行處理。推薦使用AddHandler進行設(shè)置,而將XBitBack 設(shè)置為Off,因為使用XBitBack將對所有的HTML文檔都執(zhí)行額外的檢查,降低了效率。

    #AddHandler send-as-is asis
    #AddHandler imap-file map
    #AddHandler type-map var
    上面被注釋的AddHandler用于支持Apache服務(wù)器的asis、map和var處理能力
    。

    # Action media/type /cgi-script/location
    # Action handler-name /cgi-script/location
     因為Apache內(nèi)部提供的處理功能有限,因此可以使用Action為服務(wù)器定義外
    部程序作為可處理的動態(tài)文檔類型,這些外部程序與標準CGI程序相同,都是對輸入的數(shù)據(jù)處理之后,再輸出不同MIME類型的結(jié)果。例如要定義一個對特殊后綴wri都先執(zhí)行wri2txt進行處理操作,再返回結(jié)果的操作,可以使用:

    Action windows-writer /bin/wri2txt
    AddHandler windows-writer wri
     更進一步,可以直接使用Action定義對某個MIME類型預先進行處理操作,這
    需要例子中第一種格式的Action 參數(shù)設(shè)置方式。這樣設(shè)置方式就不再需要額外的AddHandler用來將處理操作與文件后綴聯(lián)系起來,而是使用Action直接處理MIME類型的文件。但如果文檔后綴沒有正式的MIME類型,還需要先定義一個MIME類型。

    #MetaDir .web
    #MetaSuffix .meta
     Meta信息是在文檔發(fā)送給客戶之前,預先發(fā)送給客戶瀏覽器一些數(shù)據(jù),因此
    瀏覽器可以通過HEAD請求來訪問這些Meta信息而不必真正通過GET來返回全部文檔數(shù)據(jù)。服務(wù)器通常發(fā)送給瀏覽器的是一些標準的HTTP頭信息,如果要想增加額外的信息,就需要使用MetaDir來定義Meta數(shù)據(jù)存放的目錄, 而MetaS uffix用于指定包含Meta數(shù)據(jù)的文件后綴。

    #ErrorDocument 500 "The server made a boo boo.
    #ErrorDocument 404 /missing.html
    #ErrorDocument 404 /cgi-bin/missing_handler.pl
    #ErrorDocument 402
    http://some.other_server.com/subscription_info.html
      如果客戶請求的網(wǎng)頁不存在,或者沒有訪問權(quán)限等情況發(fā)生時,服務(wù)器將產(chǎn)
    生一個錯誤代碼,同時也將回應(yīng)客戶瀏覽器一個標識錯誤的網(wǎng)頁。
    ErrorDocument就用于設(shè)置當出現(xiàn)哪個錯誤時應(yīng)該回應(yīng)客戶瀏覽器那些內(nèi)容,ErrorDocument的第一個參數(shù)為錯誤的序號,第二個參數(shù)為回應(yīng)的數(shù)據(jù),可以為簡單的文本,本地網(wǎng)頁,本地CGI程序,以及遠程主機上的網(wǎng)頁。

    BrowserMatch "Mozilla/2" nokeepalive
    BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
    BrowserMatch "RealPlayer 4.0" force-response-1.0
    BrowserMatch "Java/1.0" force-response-1.0
    BrowserMatch "JDK/1.0" force-response-1.0
     BrowserMatch命令為特定的客戶程序,設(shè)置特殊的參數(shù),以保證對老版本瀏
    覽器的兼容性,并支持新瀏覽器的新特性。

    #
    # SetHandler server-status
    # Order deny,allow
    # Deny from all
    # Allow from .your_domain.com
    #
    #
    # SetHandler server-info
    # Order deny,allow
    # Deny from all
    # Allow from .your_domain.com
    #
    #
    # Deny from all
    # ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
    #

      用于設(shè)置訪問控制的設(shè)置主要是針對目錄和文件進行設(shè)置的,然而也可以針
    對不同的URL進行訪問控制的設(shè)置,這樣就不必擔心ScriptAlias、Alias是否將路徑設(shè)置到了受控制的目錄之外了。針對URL進行控制的語句為 Location語句,這樣不但能對服務(wù)器上的文件、CGI提供保護,此外,它還能保護不能找到對應(yīng)文件,而是由服務(wù)器本身提供的特殊功能URL。 http://servername/server-status用于報告當?..器的狀態(tài),http: //servername/server-info用于報告Apache 服務(wù)器的統(tǒng)計信息。與此相關(guān)的設(shè)置還有ExtendedStatus參數(shù),可以讓服務(wù)器輸出更詳細的的報告。

    #
    #ProxyRequests On
    #
    #
    # Order deny,allow
    # Deny from all
    # Allow from .your_domain.com
    #
    #ProxyVia On
    #CacheRoot "/www/proxy"
    #CacheSize 5
    #CacheGcInterval 4
    #CacheMaxExpire 24
    #CacheLastModifiedFactor 0.1
    #CacheDefaultExpire 1
    #NoCache a_domain.com another_domain.edu joes.garage_sale.com

    #

      Apache服務(wù)器本身就具備代理的功能,然而這要求加載入mod_proxy模塊。這能使用IfModule語句進行判斷,如果存在 mod_proxy模塊,就使用ProxyRequests打開代理支持。此后的Directory用于設(shè)置對Proxy功能的訪問權(quán)限設(shè)置,以及用于設(shè)置緩沖的各個參數(shù)設(shè)置。

    虛擬主機
    #NameVirtualHost 12.34.56.78:80
    #NameVirtualHost 12.34.56.78
    #
    # ServerAdmin webmaster@host.some_domain.com
    # DocumentRoot /www/docs/host.some_domain.com
    # ServerName host.some_domain.com
    # ErrorLog logs/host.some_domain.com-error_log
    # CustomLog logs/host.some_domain.com-access_log common
    #

    #

      缺省設(shè)置文件中的這些內(nèi)容是用于設(shè)置命名基礎(chǔ)的虛擬主機服務(wù)器時使用。
    其中NameVirtualHost 來指定虛擬主機使用的IP地址,這個IP地址將對應(yīng)多個 DNS名字,如果Apache使用了Listen 參數(shù)控制了多個端口,那么就可以在這里加上端口號以進一步進行區(qū)分對不同端口的不同連接請求。此后,使用 VirtualHost 語句,使用NameVirtualHost指定的IP地址作參數(shù),對每個名字都定義對應(yīng)的虛擬主機設(shè)置。
      虛擬主機是在一臺Web服務(wù)器上,可以為多個單獨域名提供Web服務(wù),并且每個域名都完全獨立,包括具有完全獨立的文檔目錄結(jié)構(gòu)及設(shè)置,這樣域名之間完全獨立,不但使用每個域名訪問到的內(nèi)容完全獨立,并且使用另一個域名無法訪
    問其他域名提供的網(wǎng)頁內(nèi)容。
      虛擬主機的概念對于ISP來講非常有用,因為雖然一個組織可以將自己的網(wǎng)頁掛在具備其他域名的服務(wù)器上的下級往址上,但使用獨立的域名和根網(wǎng)址更為正式,易為眾人接受。傳統(tǒng)上,必須自己設(shè)立一臺服務(wù)器才能達到單獨域名的目的,然而這需要維護一個單獨的服務(wù)器,很多小單位缺乏足夠的維護能力,更為合適的方式是租用別人維護的服務(wù)器。ISP也沒有必要為一個機構(gòu)提供一個單獨的服務(wù)器,完全可以使用虛擬主機能力,使服務(wù)器為多個域名提供Web服務(wù),而且不同的服務(wù)互不干擾,對外就表現(xiàn)為多個不同的服務(wù)器。
      有兩種設(shè)定虛擬主機的方式,一種是基于HTTP 1.0標準,需要一個具備多IP
    地址的服務(wù)器,再配置DNS 服務(wù)器,給每個IP地址以不同的域名,最后才能配置Apache的配置文件,使服務(wù)器對不同域名返回不同的Web文檔。由于這需要使用額外的IP地址,對每個要提供服務(wù)的域名都要使用單獨的IP地址,因此這種方式實現(xiàn)起來問題較多。
      可以在一個網(wǎng)絡(luò)界面上綁定多個IP地址,Linux下需要使用ifconfig的 alias參數(shù)來進行這個配置,但此時會影響網(wǎng)絡(luò)性能。
      HTTP 1.1標準在協(xié)議中規(guī)定了對瀏覽器和服務(wù)器通信時,服務(wù)器能夠跟蹤瀏
    覽器請求的是哪個主機名字。因此可以利用這個新特性,使用更輕松的方式設(shè)定
    虛擬主機。這種方式不需要額外的IP地址,但需要新版本的瀏覽器支持。這種方
    式已經(jīng)成為建立虛擬主機的標準方式。
      要建立非IP基礎(chǔ)的虛擬主機,多個域名是不可少的配置,因為每個域名就對
    應(yīng)一個要服務(wù)的虛擬主機。因此需要更改DNS服務(wù)器的配置,為服務(wù)器增加多個C NAME選項,如:

    linux IN A 192.168.1.64
    vhost1 IN CNAME linux
    vhost2 IN CNAME linux

     基本的設(shè)置選項都是為了linux主機設(shè)定的,如果要為vhost1和vhost2設(shè)定
    虛擬主機,就要使用VirtualHost語句定義不同的選項,在語句中可以使用配置文件前面中的大部分選項,而可以重新定義幾乎所有的針對服務(wù)器的設(shè)置。

    NameVirtualHost 192.168.1.64

    DocumentRoot /www/data
    ServerName linux.example.org.cn

    DocumentRoot /vhost1
    ServerName vhost1.example.org.cn

    DocumentRoot /vhost2
    ServerName vhost2.example.org.cn

      這里需要注意的是,VirtualHost的參數(shù)地址一定要和NameVirtualHost定義
    的地址相一致,必須保證所有的值嚴格一致,Apache服務(wù)器才承認這些定義是為這個IP地址定義的虛擬主機。
      此外,定義過NameVirtualHost之后,那么對這個IP地址的訪問都被區(qū)分不同的虛擬主機進行處理,而對其他IP地址的訪問,例如127.0.0.1,才應(yīng)用前面定義的缺省選項。

    ?

    posted @ 2007-01-25 15:22 Q系列類、方法、變量…… 閱讀(401) | 評論 (0)編輯 收藏
    http://pic1.blueidea.com/logo/logo.htm
    posted @ 2007-01-25 15:03 Q系列類、方法、變量…… 閱讀(438) | 評論 (0)編輯 收藏
    很多設(shè)計師認為做好了企業(yè)網(wǎng)站就一定能夠做好行業(yè)網(wǎng)站的設(shè)計,其實對設(shè)計來說行業(yè)網(wǎng)站和企業(yè)網(wǎng)站的設(shè)計截然不同,對整個網(wǎng)站的創(chuàng)意、風格、整體框架布局、文字編排、圖片的合理利用,空間的合理安排上面等…有著許多諸多的要求,需要考慮的面更廣,面對的問題也會更多。對于一名優(yōu)秀的網(wǎng)站設(shè)計師來說不能絕不能放過任何一點小細節(jié),本篇文章簡述的是設(shè)計師在做行業(yè)網(wǎng)站時所需考慮的一些問題。

    一、網(wǎng)站風格/創(chuàng)意
      風格(style)是抽象的。是指站點的整體形象給瀏覽者的綜合感受。整體形象包括站點的版面布局,色彩,字體,瀏覽方式等…。如:我們覺得迪斯尼是生動活潑的而IBM則是專業(yè)嚴肅的。每一個網(wǎng)站都會給人們留下的不同感受。這里我們需要做到的是根據(jù)網(wǎng)站的定位做出網(wǎng)站特有的風格。除此我們還需要在風格同一上需要把握一下,其實這個風格的統(tǒng)一和傳統(tǒng)的印刷出版物沒什么區(qū)別。你網(wǎng)頁上所有的圖像、文字,包括像背景顏色、區(qū)分線、字體、標題、注腳什么的,都要統(tǒng)一風格,貫穿全站。這樣子用戶看起來舒服、順暢,會對你的網(wǎng)站留下一個“很專業(yè)”的印象。而企業(yè)網(wǎng)站設(shè)計師往往就缺乏這一點,沒有全局意思。

      創(chuàng)意,所謂創(chuàng)意就是不拘一格?某些設(shè)計師在做創(chuàng)意的時候大費周章,做出來確實不可否認很有創(chuàng)意、很別致,但往往對于行業(yè)網(wǎng)站的客戶為什么不能接受呢?此時不要太責怪客戶的不識貨,應(yīng)該反思,抓住客戶的需求。其實做行業(yè)網(wǎng)站不需要很多大的創(chuàng)意,也不要浪費過多的時間去追求如何個性、如何好看,我們只需要一點小小的創(chuàng)意貫穿全站,也許會使網(wǎng)站更生動更具有吸引力、更有思想,比如中國現(xiàn)車交易網(wǎng)(http://www.chinaxcjy.com/)就是一個很好的案例,它把車的外形融入到網(wǎng)站中,使它脫穎而出。

    二、網(wǎng)站LOGO
      Logo 顧名思義就是站點的標志圖案,logo最重要的就是用圖形化的方式傳遞網(wǎng)站的定位和經(jīng)營理念、同時便于人們識別。網(wǎng)站logo的設(shè)計過程中一般有以下三種思路:1.直接以網(wǎng)站網(wǎng)址作為logo。2.根據(jù)網(wǎng)站提供的產(chǎn)品/服務(wù)特點展開logo設(shè)計。3.以傳遞網(wǎng)站運營商的經(jīng)營理念為特色。如:全球五金網(wǎng) logo(www.Wjw.cn)

    三、視覺流程
      人們在閱讀某種信息時,視覺總有一種自然的流動習慣,先看什么,后看什么,再看什么。在心理學的研究表明,一般的瀏覽習慣是從上到下、從左到右,在一個平面上,上松下穩(wěn)而壓抑。同樣,平面的左松右穩(wěn)。所以平面的視覺影響力上方強于下方,左側(cè)強于右側(cè)。這樣平面的上部和中上部被稱為“最佳視域”,也就是最優(yōu)選的地方。在網(wǎng)頁設(shè)計中一些突出或推薦的信息通常都放在這個位置。當然這種視覺流程只是一種感覺并非一種固定的公式,只要符合人們的心理順序和邏輯順序,就可以更為靈活地運用,在網(wǎng)頁設(shè)計中,靈活而合理地運用直接影響到傳達信息的準確與有效性。

    四、網(wǎng)頁框架與布局
     網(wǎng)頁布局大致可分為“國”字型、拐角型、“T”字型、“L”字型、綜合框架型、Flash 型、變化型,在這里就不做一一論述了。其實在我們在做設(shè)計的時候并沒有過多的去考慮什么形式,比如我們在一張紙看到一個圓形的東西,很容易可以聯(lián)想到它像太陽,而有些人則聯(lián)想到月亮等等…這都是一種形式比喻,最重要的是抓住客戶的需求,把握網(wǎng)站的定位做處合理的框架布局。

    1. 分辨率
    網(wǎng)頁的整體寬度可分為三種設(shè)置形式:百分比、象素、象素+百分比。通常在網(wǎng)站建設(shè)中以象素形式最為常用,行業(yè)網(wǎng)站也不列外。我們在設(shè)計網(wǎng)頁的時候必定會考慮到分辨率的問題,科技發(fā)展到現(xiàn)在我們通常用的是1024*768和800*600的分辨率,現(xiàn)在網(wǎng)絡(luò)上很多都是用到778個象素的寬度,在800的分辨率下面往往使整個網(wǎng)頁很壓抑,有種不透氣的感覺,其實這個寬度是指在800*600的分辨率上網(wǎng)頁的最寬寬度,不代表最佳視覺,不妨試試760~770的象素,不管在1024還是800的分辨率下都可以達到較佳的視覺效果。

    2. 合理廣告
    在目前一些網(wǎng)站的廣告(彈出廣告、浮動廣告、大廣告、banner廣告、通欄廣告等等…)讓人覺得很煩瑣,更本就不愿意來看,有時連你這個網(wǎng)站都不上了,這樣一來網(wǎng)站受到了嚴重的影響、廣告也沒達到廣告的目的。這些問題都是我們在設(shè)計網(wǎng)站之前需要考慮、需要規(guī)劃的內(nèi)容之一。

    浮動廣告有兩種,第一種是在網(wǎng)頁兩邊空余的地方可以上下浮動的廣告,第二種是滿屏幕到處隨機移動的廣告。建議能使用第一種的情況下盡量使用第一種,不可避免第二種情況時盡量在數(shù)量上控制最多一個就好。如果數(shù)量過多會直接影響到用戶的心理、防挨到用戶瀏覽信息,適得其反。首頁廣告不宜過多適中即可。如在注冊或者某個購買步驟的頁面上最好不要出現(xiàn)過多的其他無關(guān)的內(nèi)容讓用戶分心,避免客戶流失等…

    3.空間的合理利用
     很多的網(wǎng)頁都具有一個特點,用一個字來形容,那就是“塞”,它將各種各樣的信息如文字、圖片、動畫等不加考慮的塞到頁面上,有多少擠多少,不加以規(guī)范,導致瀏覽時會遇到很多的不方便,主要就是頁面主次不分,喧賓奪主,要不就是沒有重點,沒有很好的歸類,整體就像各大雜燴。讓人難以找到需要的東西。有的則是一片空白失去平衡,也可以用個“散”字來形容。
      并非要把整個頁面塞滿了才不覺得空,也并非讓整個頁面空曠才不覺得滿,只要合理的安排、有機的組合,使頁面達到平衡,既使在一邊的部分大面積留空,同樣不會讓人感到空,相反這樣會給人留下廣闊的思考空間,給人回味又達到了視覺效果?!?br />
    4.文字編排
      在網(wǎng)頁設(shè)計中,字體的處理與顏色、版式、圖形化等其他設(shè)計元素的處理一樣非常關(guān)鍵。

    4.1文字圖形化
      文字圖形化就是將文字用圖片的形式來表現(xiàn),這種形式在頁面的子欄目里面最為常用,因為它具有突出,同時又美化了頁面,使頁面更加人性化加強了視覺效果。是文字無法達到的。對于通用性的網(wǎng)站弊端就是擴展性不強。

    4.2強調(diào)文字
      如果將個別文字作為頁面的訴求重點,則可以通過加粗、加下劃線、加大號字體、加指示性符號、傾斜字體、改變字體顏色等手段有意識地強化文字的視覺效果,使其在頁面整體中顯得出眾而奪目。這些方法實際上都是運用了對比的法則。如果在更新頻率低的情況下也可以使用文字圖形化。

    五、網(wǎng)站配色
    1.用一種色彩。這里是指先選定一種色彩,然后調(diào)整透明度或者飽和度,(說得通俗些就是將色彩變淡或則加深),產(chǎn)生新的色彩,用于網(wǎng)頁。這樣的頁面看起來色彩統(tǒng)一,有層次感。

    2.用兩種色彩。先選定一種色彩,然后選擇它的對比色(在Photoshop里按ctrl+shift+I)再進行微小的調(diào)整。整個頁面色彩豐富但不花稍。

    3.用一個色系。簡單的說就是用一個感覺的色彩,例如淡藍,淡黃,淡綠;或者土黃,土灰,土藍。也就是在同一色系里面采用不同的顏色使網(wǎng)頁增加色彩,而又不花,色調(diào)統(tǒng)一。這種配色方法在網(wǎng)站設(shè)計種最為常用。

    4.灰色在網(wǎng)頁設(shè)計中又稱為“萬能色”,其特點是可以和任何顏色搭配,在使用時把握量避免網(wǎng)頁變灰。

    在網(wǎng)頁配色中,盡量控制在三種色彩以內(nèi),以避免網(wǎng)頁花、亂、沒有主色的顯現(xiàn)。背景和前文的對比盡量要大,(絕對不要用花紋繁復的圖案作背景),以便突出主要文字內(nèi)容、也使用戶在瀏覽信息的時候不會覺得累。

    六、常見問題

    6.1分解大型表格
      為了加快網(wǎng)頁的瀏覽速度,盡可能避免用大型表格,因為瀏覽器必須等待整個表格的內(nèi)容全部到達客戶端,才能顯示這個表格的內(nèi)容,而文本或圖像則是一邊下載一邊顯示。同時我們制作網(wǎng)頁時要盡量減少表格的深度、表格復雜化,這一點尤為重要可直接影響網(wǎng)頁瀏覽速度、又給后面的程序添加帶來了不必要的麻煩。

    6.2網(wǎng)站導航要清晰
      “您所在位置”在大型網(wǎng)站中是不可缺少的一部分,其作用表明您現(xiàn)在所處在的位置,使用戶不會不知東西南北迷失在網(wǎng)站中。其次還有讀者進入目的頁的點擊次數(shù),不能超過三次。如果三次以上還找不到用戶所要的信息,人家可就沒有耐心陪你玩了!

    6.3圖片注解
      在很多網(wǎng)站上我們都可以找到一個共同的缺點,當網(wǎng)速慢時有很圖片都無法顯示,又沒有注解使得用戶反感,如在注冊時的按鈕是圖片做的又沒加圖片注解,而導致連注冊都找不到,如果加了注解這些問題也就不成問題了!

    6.4系統(tǒng)按鈕
      在我們做按鈕的時候,要做成“按鈕”的形式(type="button"),而不要做成“提交表單”的形式(type="submit"),方便以后程序設(shè)計。

    6.5空鏈接、死鏈接
      在一個優(yōu)秀、專業(yè)的網(wǎng)站上是找不到任何一個空鏈接或死鏈接的情況,如果有這種情況會影響到用戶對您網(wǎng)站的評價,所以我們在制作的時候盡量避免,避免辦法就是提前做好鏈接,如果尚未完成的頁面則鏈上“建設(shè)中…”的頁面,加以解釋。

    6.6導航條
      在大型的行業(yè)網(wǎng)站里面主導航條最好是用文字形式,避免使用圖片或Flash做導航條、縮小網(wǎng)站擴展性。

    6.7網(wǎng)站的擴展性
      對于一個行業(yè)網(wǎng)站而言,網(wǎng)站的擴展性是相當重要的,隨時都要考慮到網(wǎng)站需求的變化!
    posted @ 2007-01-25 14:49 Q系列類、方法、變量…… 閱讀(385) | 評論 (0)編輯 收藏
    一.前期準備工作
    >> 明確市場定位

    企業(yè)正式開發(fā)和建設(shè)一個WEB網(wǎng)站之前,須先清楚網(wǎng)站所提供產(chǎn)品或服務(wù)的對象是哪類群體—這是一個非常關(guān)鍵的問題。如果你的目標市場是那些富有的商業(yè)專業(yè)人士,那么網(wǎng)站設(shè)計應(yīng)大方得體,簡潔易用;但如果是年輕些的客戶群體,則可以把版面做的生動活潑一些??傊蛉酥埔?。要記?。壕W(wǎng)站是要讓目標客戶看的,并吸引他們購買,所以永遠要把客戶的感受放在第一位。
    >> 確定網(wǎng)站主題

    企業(yè)的WEB網(wǎng)站應(yīng)具有清晰鮮明的主題。要讓訪問者在讀到主頁的第一段話之后就能清楚該網(wǎng)站大致是做什么的,而且可以迅速了解到網(wǎng)站所提供的產(chǎn)品或服務(wù)。若網(wǎng)站提供了多種不同產(chǎn)品,不要把所有產(chǎn)品都羅列到一個網(wǎng)頁中,我們建議大家分門別類,并對每種產(chǎn)品均設(shè)立相應(yīng)的產(chǎn)品頁。
    >> 色彩選擇及搭配

    網(wǎng)站給用戶留下第一印象的既不是網(wǎng)站豐富的內(nèi)容,也不是網(wǎng)站合理的版面布局,而是網(wǎng)站的色彩。不同的色彩搭配會產(chǎn)生不同的效果,并可能影響到訪問者的情緒。一個網(wǎng)站設(shè)計成功與否,在某種程度上取決于設(shè)計者對色彩的運用和搭配。因而確定網(wǎng)站的標準色彩是相當重要的一步。

    色彩的數(shù)量:網(wǎng)站整體使用色彩以兩到三種為宜。顏色過多會使網(wǎng)頁看起來很花哨,但缺乏內(nèi)在的美感。在顏色選擇和搭配上可借鑒一些國際大公司網(wǎng)站,他們對顏色的選擇相當審慎。
    色彩的搭配:色彩搭配一定要合理,給人以和諧愉快的感覺。一般來說,適合于網(wǎng)頁標準色的顏色有藍色,黃/橙色,黑/灰/白色三大系列色。在顏色的搭配上,有幾種比較經(jīng)典的方案:紅/黃/白; 藍/白; 紅/灰/白; 藍/橙/白; 黃/灰/白。實在不行就去Google一下吧,找一個自己喜歡的網(wǎng)站,看看人家的顏色是怎么搭配使用的,或許會對你大有啟發(fā)。
    其它注意事項:避免采用純度很高的單一色彩,這樣容易造成視覺疲勞。避免使用過于明亮或?qū)Ρ冗^于強烈的顏色,它們會對眼睛造成傷害,如白底黃字等等。顏色對比過于接近或不合理的,如深底淺字,深底深字等(例如深藍色底和黑字)也是設(shè)計之大忌。建議最好用淺色背景(當然白色最好),黑或深色文字。

    >> 遵循K.I.S.S理念

    老話說的好:Keep It Simple Stupid。Stupid在這里指“拙樸”,即務(wù)求最簡潔直觀。該設(shè)計理念被奉為網(wǎng)站設(shè)計、搜索引擎優(yōu)化和網(wǎng)上商務(wù)的黃金規(guī)則之一。如果你的網(wǎng)站無法為訪問者提供最直接的產(chǎn)品或服務(wù)信息,就等于你在把自己的潛在客戶往競爭對手的網(wǎng)站上送。
    二.設(shè)計三要素
    無論一個網(wǎng)站是出于什么目的,若想取得最大的成功,則須保證網(wǎng)站的便利、快速和便宜。這是網(wǎng)站設(shè)計中最基本的三個要素。
    要素一:便利性
    保證客戶可以用最小的努力得到他們要找的資料信息。要做到這樣,你必須確保網(wǎng)站為用戶提供了充分的便利性。根據(jù)這一原則,我們在網(wǎng)站設(shè)計中應(yīng):

    >> 建立良好網(wǎng)站結(jié)構(gòu)

    在設(shè)計時不單需要考慮站點的外觀是否漂亮,還需要考慮到搜索引擎是否能夠很好地支持你的設(shè)計結(jié)構(gòu)。我們不建議大家使用下面這些設(shè)計形式:
    - Frames結(jié)構(gòu):具有導航清晰且方便維護的優(yōu)點,但搜索引擎對這類網(wǎng)站在索引上仍有一定難度。
    - Flash動畫:網(wǎng)頁視覺效果較好,但搜索引擎同樣在檢索上存在一定難度,而且影響網(wǎng)頁的打開速度。
    - 純圖片網(wǎng)頁:搜索引擎一般認為這樣的網(wǎng)站沒有為用戶提供實質(zhì)的信息內(nèi)容,因而是無足輕重的。
    - 動態(tài)頁面:具有容易維護和更新的優(yōu)點,但必須了解:并非所有的搜索引擎都能夠象對待靜態(tài)頁面一樣來對待動態(tài)頁面,此外宜使動態(tài)頁面的參數(shù)可能少。
    - Javascript/Java Applets:搜索引擎不支持Java Applets,此外Java設(shè)計的網(wǎng)站往往會影響網(wǎng)頁的打開速度。

    >> 內(nèi)容第一,形式其次

    與其在網(wǎng)站的圖片和顏色上下足工夫,不如多花點時間在網(wǎng)站的內(nèi)容上—客戶最關(guān)心的莫過于產(chǎn)品的性能,質(zhì)量等等。只要你的內(nèi)容足夠吸引人,即使象白底黑字般簡單的設(shè)計也遠遠勝過那些華麗的版面設(shè)計。
    >> 內(nèi)容更新與溝通

    企業(yè)Web站點建好后應(yīng)不斷補充以新的內(nèi)容。站點信息的不斷更新不但可以讓瀏覽者了解到企業(yè)的發(fā)展動態(tài),同時也會幫助企業(yè)建立良好的形象。
    >> 增強網(wǎng)站可信度

    互聯(lián)網(wǎng)的非個人性容易使網(wǎng)民滋生某種程度的不信任感。你的客戶是否能夠信任你,這其實完全取決于你。
    建議:可從以下幾方面著手來增強網(wǎng)站的可信度
    - 網(wǎng)站內(nèi)容信息的完整性及真實可信性
    - 網(wǎng)站導航清晰,更新及時且無錯誤鏈接
    - 專業(yè)的網(wǎng)站設(shè)計
    - 網(wǎng)站顯著位置列出個人信息保密聲明(隱私保護條款)
    - 網(wǎng)站顯著位置列出服務(wù)條款信息
    - 清楚地說明所有收費項目
    - 對顧客服務(wù)咨詢做出快速回應(yīng)
    - 對網(wǎng)上支付,清楚說明如何保護信用卡信息
    - 向客戶發(fā)送交易確認電子郵件
    - 對網(wǎng)站上發(fā)表的文章明確說明作者及來源
    - 避免鏈接到不相關(guān)或者低質(zhì)量的站點

    >> 提供退款承諾

    如果要向客戶表明你的產(chǎn)品或服務(wù)的質(zhì)量,再沒有比這更好的辦法了。
    >> 提供便捷付款

    作為世界上最成功的“網(wǎng)絡(luò)零售業(yè)”典范之一,網(wǎng)上超市亞馬遜(Amazon.com)年銷售額達數(shù)十億美元的驕人成績一部分原因恐怕就要歸功于其付款手續(xù)的便捷性。
    對網(wǎng)上銷售服務(wù)應(yīng)確保整個付款手續(xù)清楚易用。盡量簡化付款步驟,除了交易所必須的信息之外,千萬別要求客戶提供其它個人信息。
    可經(jīng)常查看網(wǎng)絡(luò)日志中關(guān)于客戶付款方面的信息。若總出現(xiàn)客戶付款中途放棄退出的情況,則需要重新檢查付款手續(xù)是否欠妥。

    >> 充分利用客戶推薦信息

    一個網(wǎng)站上提供了客戶對其產(chǎn)品或服務(wù)的推薦或贊賞性的話,則在一定程度上可以提高公司和產(chǎn)品的可信性。所以要充分利用客戶或準客戶對公司或產(chǎn)品的贊賞性的話語,不過在網(wǎng)上發(fā)布之前先須征得他們的同意。
    >> 提供產(chǎn)品小貼士信息

    從細節(jié)著手,向客戶提供一些針對產(chǎn)品或服務(wù)所出現(xiàn)的問題的簡單解決方案。
    posted @ 2007-01-25 14:38 Q系列類、方法、變量…… 閱讀(338) | 評論 (0)編輯 收藏
    這是一篇很好的總結(jié)文章,關(guān)于界面設(shè)計一些基本原則歸納,在設(shè)計的時候很有幫助

    本文列舉Jeff Johnson:《GUI設(shè)計禁忌》一書中提及的明確針對Web設(shè)計和筆者認為對Web設(shè)計有參考意義的設(shè)計原則和禁忌。設(shè)計Web項目時盡量參考一下基本原則,避免設(shè)計禁忌,應(yīng)該能使Web項目的GUI上一個層次。

    基本原則:

    1、關(guān)注用戶及其任務(wù),而不是技術(shù)

    2、首先考慮功能,然后才是表示

    3、從用戶的視角看問題,使用用戶的詞匯進行描述

    4、不要向用戶暴露實現(xiàn)細節(jié)

    5、使常用的用戶任務(wù)簡單化,不要讓用戶解決額外的問題

    6、保持一致性,引導用戶的使用習慣

    7、保持顯示慣性,傳遞信息,而不僅僅是數(shù)據(jù)

    8、設(shè)計應(yīng)滿足響應(yīng)需求

    禁忌:

    1、同一頁面包含重復功能的鏈接或按鈕

    2、將復選框用作單選按鈕

    3、無初始值的多選一設(shè)置

    4、在非開/關(guān)設(shè)置中使用復選框

    5、用文本框顯示只讀數(shù)據(jù)

    6、單選按鈕之間間隔太大

    7、屬性標記對齊方式不一致

    8、當前無效的控件不充分置灰

    9、顯示對用戶無意義的錯誤提示

    10、不同的類型頁面窗口顯示相同的標題

    11、窗口的標題和調(diào)用的命令不一致

    12、要求用戶輸入隨機數(shù)

    13、相似的功能卻有不一致的用戶操作界面

    14、取消按鈕無法真正取消操作

    15、網(wǎng)站結(jié)構(gòu)反映公司的結(jié)構(gòu)或網(wǎng)站升級的歷史

    16、返回按鈕不能達到預期的目的

    17、搜索選項過多,過度復雜

    18、使用容易被忽略的隱藏的圖片鏈接

    19、需要向下滾動才能看到當前頁的重要信息

    20、圖片按鈕對鼠標按下操作沒有視覺變化

    21、無意義的虛假進度條

    22、執(zhí)行長時間的任務(wù)時鼠標指針不顯示成忙狀態(tài)

    23、不考慮用戶可能的人為的錯誤輸入

    24、認為好的UI就是漂亮的UI

    25、盲目錯誤的使用頁面模塊化設(shè)計
    posted @ 2007-01-25 14:35 Q系列類、方法、變量…… 閱讀(412) | 評論 (0)編輯 收藏
    僅列出標題
    共6頁: 1 2 3 4 5 6 下一頁 
    主站蜘蛛池模板: 亚洲一区无码精品色| 99久久国产免费-99久久国产免费| 无忧传媒视频免费观看入口| 亚洲AV成人精品日韩一区| 亚洲日本成本人观看| 亚洲午夜成人精品无码色欲| 亚洲 日韩 色 图网站| 亚洲色精品VR一区区三区| 亚洲熟妇av午夜无码不卡| 亚洲最大天堂无码精品区| 亚洲人成网站999久久久综合| 亚洲影院天堂中文av色| 日韩亚洲人成网站| 一级毛片在线免费视频| 91福利免费网站在线观看| 人妻免费一区二区三区最新| 久9久9精品免费观看| 18观看免费永久视频| 99久久免费精品国产72精品九九| 情侣视频精品免费的国产| 免费在线观看一级毛片| 国产成人亚洲精品狼色在线| 亚洲av无码一区二区三区不卡| 久久青青草原亚洲av无码app| 亚洲a级片在线观看| 国产精品亚洲一区二区在线观看| 污视频网站在线免费看| 99免费在线视频| 91成年人免费视频| 日本免费网站观看| 亚洲一区二区女搞男| 亚洲理论片在线观看| 亚洲AV成人无码久久WWW| 99麻豆久久久国产精品免费| 99在线精品视频观看免费| 国产成人精品免费视频软件| 亚洲精品狼友在线播放| 亚洲av专区无码观看精品天堂| 美女免费视频一区二区| 男的把j放进女人下面视频免费| 99久久综合国产精品免费|