2014-04-30 23 views
10

Sto usando phantom js per testare l'accesso a una pagina Web, questa operazione viene eseguita approssimativamente 350 volte nell'arco di circa mezz'ora. Quindi eseguo webalizer contro il server per verificare gli accessi alle pagine.PhantomJS che mantiene la cache

I miei client phantom js si trovano all'interno di 1 istanza di phantom js quindi funziona fondamentalmente nel senso che una volta che un client ha aperto la pagina web, avvia il prossimo client, il tutto con indirizzi IP individuali e indirizzi MAC in tutto.

Tuttavia, quello che sto riscontrando nel webalizer è che mentre ottengo 350 hit sul server, ottengo solo 1 hit per istanza di phantomjs che eseguo su alcuni file css e altri. Quindi mi è venuta l'idea di mettere insieme i client nella cache.

Ho tentato di eseguire --max-disk-cache-size = 0 quando si chiama l'istanza js fantasma ma si vede ancora che agisce allo stesso modo.

Qualcuno ha avuto la stessa esperienza prima?

risposta

19

Eseguire page.clearMemoryCache(); prima di page.open è possibile pulire la cache.

È disponibile in this issue e funziona perfettamente con PhantomJS 2.0.

+0

Il problema menziona anche che il problema può rimanere - è vero? –

+2

Non funziona. Prendo '[TypeError: page.clearMemoryCache non è una funzione]' – TetraDev

-1

Non è possibile cancellare la cache (memoria o disco). Un problema è aperto su Github here da alcuni mesi e spero ancora che questo sarà rilasciato in futuro.

Questo unico modo è avviare una nuova istanza di phantomjs senza cache del disco.

PhantomJs è un browser senza testa, quindi si prega di considerare un'istanza di PhantomJS come utente unico. Aprire 100 volte la stessa pagina web nel tuo browser preferito ridurrà 100 volte ogni risorsa della tua pagina web? No, questo è esattamente come funziona PhantomJS.

+3

Ho trovato la correzione, la maggior parte del codice è stata completamente implementata tuttavia l'opzione page.settings.clearMemoryCaches = true non seguiva il [collegamento] (https://github.com/ant0ine/phantomjs/commit/91cf016a1cd6e91a11a3516bb2366fd04ff235a9) per ottenere l'accesso al codice, funziona a meraviglia. L'idea di usare la stessa istanza di fantoccio per controllare molti client, usa meno memoria! – Charabon

Problemi correlati