AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | PTX | SUN | Win NT |
X |
|
|
|
|
|
|
| X |
目的
快取因巨集處理結果而產生的部份或全部網頁。
格式
@DTW_CACHE_PAGE(cacheID, pageID, age, status)
參數
參數 | 使用 | 說明 |
---|---|---|
cacheID | IN | 一個字串變數用來識別頁面將被放置的快取記憶體。 |
pageID | IN | 一個包含識別字的字串變數, 在後續的 DTW_CACHE_PAGE 快取要求中,用來指定快取頁面的位置。 字串可以是一個 URL。 |
age | IN | 一個字串變數,
包含了以秒為單位的時間長度。這個參數決定一個頁面是否過期。如果
頁面已經比 age 還要舊時,此頁面就不會被傳送到瀏覽器。
如果 age 被設定為 -1,且頁面存在快取記憶體中,則不論其經歷時間, Net.Data 會直接從快取記憶體中將它傳送到 Web 瀏覽器。 Net.Data 不會置換快取記憶體中的頁面。 |
status | OUT | 顯示快取頁面狀態的
字串變數。可能的值是以小寫顯示:
|
回覆碼
回覆碼 | 說明 |
---|---|
-1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
1001 | 輸入參數包含 NULL 值。 |
1002 | 輸入參數包含的字串有空字元結尾。 |
1003 | 函數呼叫上傳遞的參數數目不正確。 |
1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
1007 | 參數包含的值無效。 |
用法注意事項
如果所要求的頁面不在快取記憶體中,或現有的快取頁面 已經大於 age 值,Net.Data 會產生新的輸出頁面。 當巨集順利的完成後,Net.Data 會將新頁面傳送到 瀏覽器,並同時快取頁面。
對於進階快取應用程式而言,當您需要在處理過程中決定快取的特定位置時, 您可以將函數放置在巨集的特定位置,而不是巨集開頭。 例如, 您可能需要基於在查詢或函數呼叫後要傳回多少列數而來作快取的決定。
範例
範例 1:將 DTW_CACHE_PAGE() 函數放置在巨集的開頭, 以擷取所有 HTML 輸出
%IF (customer_status == "Classic") @DTW_CACHE_PAGE("mymacro.mac", "http://www.mypage.org", "-1", status) %ENDIF % DEFINE { ...%} ... %HTML (OUTPUT) { <title>這是頁面標題 </head> <body> <center> 這是主標題 <p>現在時刻 $(time)。祝您有愉快的一天! </body> </html> %}
範例 2:將函數放置在 HTML 區塊中, 因為快取的決定取決於 HTML 輸出的 預期大小
%DEFINE { ...%} ... %FUNCTION(DTW_SQL) count_rows(){ 從客戶選取 count(*) %REPORT{ %ROW{ @DTW_ASSIGN(ALL_ROWS, V1) %} %} %} %FUNCTION(DTW_SQL) all_customers(){ select * from customer %} %HTML (OUTPUT) { <html> <head> <title>這是客戶列表 </head> <body> @count_rows() %IF ($(ALL_ROWS) > "100") @DTW_CACHE_PAGE("mymacro.mac", "http://www.mypage.org", "-1", status) %ENDIF @all_customers() </body> </html> %}
在這個範例中,頁面的快取或取回是基於 HTML 輸出 的預期大小。只有當資料庫表格內容超過 100 列時,HTML 輸出頁 才值得快取。執行巨集後,Net.Data 總是將 OUTPUT 區塊中的文字,這是客戶列表,傳送到 瀏覽器;文字從不快取。當 IF 區塊的條件滿足時, @count_rows() 函數呼叫的下幾行, 會被快取或取回。兩者一同形成 完整的 Net.Data 輸出頁面。
範例 3:動態取回快取記憶體 ID 與 快取頁面 ID
%HTML (OUTPUT) { %IF (customer == "Joe Smith") @DTW_CACHE_PAGE(@DTW_rGETENV("DTW_MACRO_FILENAME"), @DTW_rGETENV("URL"),"-1", status) %ENDIF ... <html> <head> <title>這是頁面標題</title> </head> <body> <center> <h3>這是主標題</h3> <p>今天是 @DTW_rDATE()。祝您有愉快的一天!</p> </center> </body> </html> %}