最近、友人の Web サイトで静的な Web サイトを生成する必要がありますが、静的な Web サイトを生成するときに問題が発生することがあります。いくつかの方法をまとめました。Web サイトのニーズに応じて選択できます。 1. ASP で静的ホームページを生成する 2 つの簡単な方法
なぜ静的なホームページを生成するのでしょうか?
1. ホームページがデータベースを頻繁に読み取る場合、速度が非常に遅くなり、多くのサーバー リソースが消費されます。もちろん、静的ページを使用すると、アクセス速度がはるかに速くなります。
2. 検索エンジンで簡単に見つけられる
3. プログラムに問題がある場合は、ホームページにアクセスできます。
4. 他にもたくさんあるので、自分で考えてください:)
応募方法:
ホームページがindex.aspの場合、index.htmを生成できます(デフォルトのアクセス順序はindex.htm、index.aspである必要があります)。このようにして、訪問者は初めて Web サイトにアクセスするときに、index.htm を開きます。 Web サイトのホームページ上のリンクを Index.asp にすることができます。これにより、Web サイトのどのページからでもホームページ上のリンクをクリックすると、index.asp が表示されます。これにより、情報更新の適時性が保証されます。 、index.htm は毎回手動で更新する必要があります)。
方法 1:
フォームのテキスト ボックスにホームページ ファイルを直接含め、ホームページ コードをデータとして送信し、静的ページを生成します。
コードは次のとおりです。
次のようにコードをコピーします。
<%
'------------------------------------------------ - ---------
'フォーム送信を使用して静的ホームページのコードを生成します
'スペースが FSO をサポートし、ホームページ上のコード コンテンツが少ないことを確認してください
'------------------------------------------------ - ---------
薄暗い内容
content=Trim(リクエスト.フォーム(コンテンツ))
if content<> then
makeindex() を呼び出す
終了する場合
サブmakeindex()
Set Fso = Server.CreateObject(Scripting.FileSystemObject)
Filen=Server.MapPath(index.htm)
Site_Config=FSO.CreateTextFile(Filen,true, False) を設定します。
Site_Config.コンテンツの書き込み
Site_Config.Close
Fso = なしを設定します
Response.Write(<script>alert('ホームページが正常に生成されました!')</script>)
エンドサブ
%>
<フォーム名=form1 メソッド=ポストアクション=>
<テキストエリア名=コンテンツ>
<!-- #include file=index.asp -->
</textarea>
<br>
<入力タイプ=送信名=送信値=送信>
</form>
欠点:
1. ホームページに <@ ..> タグが含まれている場合、エラーが表示されます。
2. ホームページコードが長すぎる場合、フォームからの送信はできません(フォームデータの長さには一定の制限があります)。
解決:
1.index.asp の <@ > タグを削除します。
2. eWebEditor を使用してビッグ データを送信およびサポートします (自動的にセグメント化可能)
アドバンテージ:
コンテンツは生成時にリアルタイムで変更できます。
方法 2:
XMLHTTP を直接使用して、index.asp のコードを取得します。
次のようにコードをコピーします。
<%
'------------------------------------------------ - ---------
'XMLHTTP を使用して静的なホームページ コードを生成する
'Curl はホームページのアドレスです。スペースが FSO をサポートしていることを確認してください
'------------------------------------------------ - ---------
ディムリード、カール、コンテンツ
カール=http://www.xx0123.com/index.asp
read=getHTTPage(カール)
読み取り<>の場合
内容=読む
makeindex() を呼び出す
終了する場合
サブmakeindex()
Set Fso = Server.CreateObject(Scripting.FileSystemObject)
Filen=Server.MapPath(index.htm)
Site_Config=FSO.CreateTextFile(Filen,true, False) を設定します。
Site_Config.コンテンツの書き込み
Site_Config.Close
Fso = なしを設定します
Response.Write(<script>alert('ホームページが正常に生成されました!')</script>)
エンドサブ
関数 getHTTPPage(url)
薄暗いhttp
set http=Server.createobject(Microsoft.XMLHTTP)
Http.open GET,url,false
Http.send()
if Http.readystate<>4 then
終了関数
終了する場合
getHTTPPage=bytesToBSTR(Http.responseBody,GB2312)
http=何も設定しない
if err.number<>0 then err.Clear
終了機能
関数 BytesToBstr(body,Cset)
薄暗いオブジェクトストリーム
set objstream = Server.CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.本体の書き込み
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
objstream = 何も設定しない
終了機能
%>
2. テンプレートの分離とバッチ生成
テンプレートファイルの置換対象の内容を{...}で囲みます。
簡素化を図るために、エラー処理コードは削除されました (replace で置換される文字列パラメーターは null 値であってはなりません。もちろん、fso はエラー チェックも行う必要があります)。
次のようにコードをコピーします。
<%
'------------------------------------------------ - ------------------------------------------------- - -----------------
' From: kevin fung http://www.yaotong.cn
' 著者: kevin fung Laggard ID: kevin2008、転載する際はそのままにしておいてください
' 時間: 2006/07/05 Laggard フォーラムの最初のリリース
'------------------------------------------------ - ------------------------------------------------- - ------------------
Dim start 'この変数は、ポインタが指すレコード セットの位置であり、パラメータを通じて動的に取得されます。
Dim Template 'テンプレート ファイルはこの変数を文字列に読み込みます
Dim content '置換された文字列変数
Dim objConn '接続オブジェクト
Dim ConnStr '接続文字列
Dim sql 'クエリステートメント
Dim cnt:cnt = 1 'このサイクルのループカウンターを初期化します
start = request(start) '現在のラウンドポインタの開始位置を取得します
If IsNumeric(start) then start = CLng(start) Else start=1
開始 = 0 の場合、開始 = 1 '開始の場合
ConnStr = プロバイダ = Microsoft.Jet.OLEDB.4.0;データ ソース = & Server.MapPath(DataBase.mdb)
sql = select * from table_name
objConn = Server.CreateObject(ADODB.Connection) を設定します。
objConn.Open ConnStr
set rs = Server.CreateObject(ADODB.Recordset)
rs.open sql,objConn,1,1 'データセットを開きます
rs.AbsolutePosition = start '最も重要なステップは、ポインタを開始位置に指定することです。これはパラメータを通じて動的に取得されます。
Template = getTemplate(Server.MapPath(template.html))' template.html はテンプレート ファイルであり、関数 getTemplate を通じて文字列が読み込まれます。テンプレート ファイル内の置換される内容は {...} で囲まれます。
While Not rs.eof And cnt<= 500 '500 はページ生成リクエストのサイクル数を設定するため、多すぎるとタイムアウトエラーが発生します。レコードセット。
content = Replace(Template,{filed_name_1},rs(filed_name_1)) 'テンプレートの内容をフィールド値で置き換えます
content = Replace(content,{filed_name_2},rs(filed_name_2))
...
content = Replace(content,{filed_name_n},rs(filed_name_n))
genHtml content,Server.MapPath(htmfiles/&rs(id)&.html) 'テンプレート文字列を置き換えてHTMLドキュメントを生成します。 htmfilesは静的ファイルが格納されるディレクトリです。手動で作成してください。
cnt = cnt + 1 'カウンタープラス 1
start = start + 1 'ポインタ変数の増分
rs.movenext
曲がります
If Not rs.eof then 'リフレッシュしてリクエストの次のラウンドを作成し、ポインタ変数 start を次のラウンドに渡します
response.write <meta http-equiv='refresh' content='0;URL=?start=&start&'>
それ以外
これでresponse.writeのHTMLファイルの生成が完了しました。
次の場合に終了
rs.Close()
Setrs=なし
objConn.Close()
objConn = なしを設定します
Function getTemplate(template)' テンプレートを読み取り、文字列を返す関数。テンプレートはファイル名です
ディム fso,f
set fso=CreateObject(Scripting.FileSystemObject)
set f = fso.OpenTextFile(テンプレート)
getTemplate=f.ReadAll
f.閉じる
f=何も設定しない
fso=何も設定しない
終了機能
Sub genHtml(content,filename)' は、置換されたコンテンツを HTML ドキュメントに書き込みます。content は置換された文字列、filename は生成されたファイル名です。
ディム fso,f
fso = Server.CreateObject(Scripting.FileSystemObject) を設定します。
Set f = fso.CreateTextFile(filename,true)'ファイル名が重複すると古いファイルが上書きされます
f.書き込み内容
f.閉じる
f = 何も設定しない
fso=何も設定しない
エンドサブ
%>