Statik Sayfalar kalıcı olarak Önbellek Dinamik PHP / MySQL Forumu

3 Cevap php

Bir keresinde bir online deathmatch oyuncuların küçük bir grup için bir ev yapımı forum sistemini koştu. Bu forumlar çoktan kapatıldı, ve şu anda çevrimdışı var. Ne yapmak istiyorum, eski kullanıcıların arama olabilecek bir online arşiv sahip çıkarına, tüm sistem için tüm verileri içeren statik HTML dosyaları oluşturmak olduğunu.

Ben orijinal verilerin tümü üzerinde kontrole sahip. Bu şunları içerir:

  • Görüntüler
  • Profilleri
  • Forum Konular
  • Veritabanı
  • PHP Script

Temelde, ben hayatta tutmak için kaynak harcamak zorunda değilsiniz, böylece denklemin dışında veritabanı almak istiyorum. (Bu bir ev yapımı forumu çözüm olduğu için ve de, ben çok optimize değil eminim)

Bu ulaşılabilir bir hedef mi, yoksa ben sadece forumları oldukları şekilde tutmak, değil havai endişe gerekir?

Mümkün (ve uzaktan uygulanabilir) ise, ben devam etmek konusunda bir kaç öneri alabilirim?

3 Cevap

wget bir web sitesinin bir HTML ayna oluşturabilirsiniz. Ayna - kullanım için dokümanlar bakın.

Tüm çıkış yakalamak ve tarayıcı dışında bir dosyanın yerine yazmak için çıktı tamponlama kullanın.

: (Tarayıcıya herhangi bir HTML çıktı önce) üstünde, bu çizgi var, böylece kodu düzenleyin

ob_start();

yazısının sonunda, bu ekleyin:

$output = ob_get_clean();
file_put_contents("<<name of this page>>.html", $output);

Eğer çiftleri alamadım bu yüzden bazı adlandırma şeması ile gelmek olurdu.

Sonra, bir regex kullanarak, bağlantıları kırmak kalmaz yeni bir HTML sayfası için tüm isteklerini yönlendirmek için apache RewriteRules kullanın.

Tüm sayfaları almak için, sadece birçok yoksa, bunlar aracılığıyla döngü sonra elle bir diziye bütün URL'leri yazmak ve olabilir bunlardan tek tek her bir tıklama olabilir, ya da hatta siteyi kendinizi sürünmek, Bir sayfadaki tüm URL'ler için arayan ve gitmek gibi kuyruğuna ekleyerek.

Ne ceejayoz Yoksa istediğiniz düşündüğün kadar uzun yıllar boyunca, başvurunuzun bootstrap bir önbelleği bir önbellek başlıkları ekleyebilirsiniz dedi.

Eğer session_start önbelleğe almayı engeller başlıklarını yayar gibi, bunu varsa session_start sonra bu işlevini çağırmak için emin olun, önbelleğe clientside istediğiniz saat sayısı ile bağlı işlevine bir çağrı koydu.

function client_side_cache($hours)

{
    	//in the event a session start is used, I have to clean all the #$%# headers it sends to prevent caching
    	header('Cache-Control: ',true);
    	header("Pragma: ", true);
    	header("Expires: ", true);

    	//get the If-Modified-Since header in a unix time format
    	$headers = getallheaders();
    	if (isset($headers['If-Modified-Since']))
    	{
    		$modifiedSince = explode(';', $headers['If-Modified-Since']);
    		$modifiedSince = strtotime($modifiedSince[0]);
    	}
    	else
    	{
    		$modifiedSince = 0;
    	}

    	//calculate the Last-Modified timestamp
    	$current_time=time();
    	$last_modified=($current_time)/($hours*3600);
    	$last_modified=(int)$last_modified;
    	$last_modified=$last_modified*$hours*3600;

	//check cache not expires
    	if ($last_modified <= $modifiedSince)
    	{
    		header('HTTP/1.1 304 Not Modified');
    		exit();
    	}

    	else //emit a new Last-Modified (either cache expired or page wasn'r cached
    	{
    		Header('Last-Modified: '.gmdate("D, d M Y H:i:s",$last_modified).' GMT ');
    	}

}