2010-05-16 71 views
1

我提出這是「被迫」通過Cache-control被緩存,當用戶訪問我的網站靜態網站等預緩存站點的用戶訪問

,我希望瀏覽器抓取我的網站,緩存頁面,所以當用戶導航到頁面時,加載幾乎是即時的。

(我不需要遞歸爬網,因爲這可能會在用戶瀏覽頁面時發生,我只需要抓取當前頁面上的鏈接,當然不會重新緩存已經存在的頁面緩存)

(另外,我不改變使用類似Ajax的技術頁面,這基本上是與正常鏈接正常平HTML文件)。

我怎樣才能做到使用Javascript這種預緩存? (我使用jQuery。)

回答

2
$.ajaxSetup({ cache : true, type : 'GET' }); 

$('a').each(
    function() 
    { 
     $.ajax({ url : $(this).attr('href') }); 
    } 
); 

但我不知道你的瀏覽器會緩存供將來使用的頁面,而無需使用的XmlHttpRequest。

+0

這是我的方法。根據我的經驗,XmlHttpRequest對象緩存頁面請求,除非另有說明 - 並且無論後續請求是否爲「自然」瀏覽器請求或進一步的AJAX調用,該緩存都有效。如果你強制緩存頭部到客戶端,任何對頁面上鍊接hrefs的AJAX調用都應該實現你所要求的預緩存行爲。當然,這只是我經歷過的行爲 - 我不能說這是一種應該指望的行爲。 – BradBrening 2010-05-16 01:55:18

+0

由於某些原因,Firefox並不總是尊重我在Ajax請求中設置的緩存。它適用於大多數請求,但它始終保持緩存,因此頁面導航速度很快。感謝你的回答! – strager 2010-05-16 02:22:23

0

不僅靜態內容的緩存,很多東西需要改進的網站性能看Enhancing user browser experience

+0

我明白這一點。我想*預先*緩存頁面,所以在用戶訪問之前它已經被緩存了。 – strager 2010-05-16 01:47:15

0

查找到新的HTML5功能,是Cache Manifest工作要做。

+0

我應該提到這需要與IE7/8,Safari和Firefox合理合作。 – strager 2010-05-16 01:44:34

+0

這是一個在不支持它的瀏覽器中不會被注意到的事情,所以我建議你這麼做。 – 2010-05-16 01:48:09

+0

否則您可能對此感興趣:https://developer.mozilla.org/en/Link_prefetching_FAQ – 2010-05-16 01:50:01