Gizli divs kullanarak önbelleğe alma veri

5 Cevap php

Ben şu yaparak benim ajax web uygulaması yanıt sürelerini hızlandırmak için çalışıyorum:

Kullanıcı içerikleri değişmez (örneğin, bir web formu) bir sayfa istediğinde söylüyorlar. Kullanıcı farklı bir istekte bulunduğunda, ben gizli bir div koyarak formu 'önbelleğe'. Yeni bilgileri göstermeden önce. Yani formu temelde hala tarayıcıda yüklü ama kullanıcıya görünür değildir. Kullanıcı tekrar aynı formu isterse, gizli div yüklenmiş olur. Bu form sunucuya bir yuvarlak gezi yapıyor daha önemlisi hızlı.

Tarayıcı bellekte bir sürü tutmak için alır muhtemelen performansı düşer ben birçok bilgiye sahip olan bunu yaparken fark yok. Ama ben bu şekilde "önbelleğe alınmış" olur ne kadar bir sınır koyacaktır.

Şimdi, ben bunu yapmanın daha iyi / kurulan bir yolu olup olmadığını bilmek istiyorum neden olan başıma geldi. Beklendiği gibi çalışır ancak olası sakıncaları (belki de güvenlikle ilgili?) Ne olduğunu bilmiyorum.

I would appreciate any suggestions. Many thanks.

5 Cevap

Ben daha önce yaptım. Bu yararlı bir yöntem olabilir. Sadece verilerin doğru olduğunu ve JS özürlü kullanıcı arayüzleri destekleyen emin olun.

Iyi bir çözüm olduğunu Ve bu: EDIT.

JS değişken içinde formu için HTML kod saklama muhtemelen bu HTML kodunun yorumlanması (form + form alanları + çeşitli biçimlendirme) ile gizli bir div sahip daha verimlidir.

Form kod sayfası olarak aynı anda üretilir, sadece bir JS değişkene yazdırmak:

<script language="javascript">
var myFormCode = '<? echo $myFormCode; ?>';
</script>

(Yani PHP kullanıyorsanız ... diğer dillerde uzağında olduğunu olmamalıdır bulunuyor)

Form kod, daha sonra oluşturulur ise, JSON yoluyla metin olarak gönderebilirsiniz:

<?php
  echo json_encode($myFormCode);
?>

... Gerektiğinde ve sonra istemci tarafında böyle bir şey, sizin form oluşturmak:

<script language="javascript">
  myRealFormDiv.innerHTML = eval(myJSONEncodedTextIGotViaAJAX);
</script>

JS kodu yazmanız gerekir tam olarak ne belli değil, ama muhtemelen benim açımdan bakın.

Bu işe ben aklınıza gelebilecek en iyi çözümdür gerekir. Herhangi bir güvenlik etkileri olup olmadığını gerçekten formları bağlıdır ve nasıl çalıştıkları - kimse gerçek kodu olmadan bu teşhis mümkün olacak.

Ne kullanımı hakkında APC veya Memcached?

Onlar potansiyel sorun yaratabilecek değil 'gizli hileler' ile temiz html biçimlendirme tutmak için izin verirsiniz (kullanıcı css etkin dont? Erişilebilirlik hakkında IE6? Ne kullanmalıyım?)

Sizin ihtiyaçlarınıza bağlıdır, ancak genel bir şekilde sayfa, bu containt gereken sadece ne başka bir şey içermelidir.

Bunu yapmanın bir başka yolu da form için set the "Expires" or "Cache-Control" HTTP headers etmektir.

Eğer ayarlarsanız, bir http://example.com/form.html, daha sonra kullanıcı bu forma gider bir saat içinde sefere HTML sunucuyu dokunmadan yüklenecek url için gelecekte başlığı 1 saat "Expires".

Eğer düzgün sürümü varsa images / CSS / JS ve onlara uzak gelecek vermek gibi sıra başlıkları "Expires", daha sonra hiçbir sunucu gidiş dönüş olacak, artı performansı, sayfaları geri kalan yardımcı olacağız.