簡體   English   中英

在緩存頁面中調用動態內容(當前使用ajax)的正確方法是什么?

[英]What is the right way to call dynamic content (currently using ajax) inside a cached page?

我們有一個新聞網站,我們緩存一個完整的文章頁面。

該頁面上有4個區域需要繼續保持動態:

  1. 查看計數器:我們在頁面加載時向該文章的view_counts添加+1。
  2. 標題:在網站的標題上,我們檢查session-> id是否存在,如果是,我們顯示歡迎[名稱],我的個人資料/注銷,如果不存在,我們會顯示注冊/登錄。
  3. 評論:我們顯示為該文章所做的評論。
  4. 跟蹤用戶行為:我們跟蹤用戶在網站上所做的每一個操作

現在,我們想到這樣做的唯一方法是通過AJAX調用:

$('#usercheck').load(<?php echo "'" . base_url() . "ajax/check_header'"; ?>);

等等。

這對CPU產生了巨大的負擔,但是接近這個的正確/替代方式是什么?

請參照附件:

負載在60分鍾

網站上的高交易

首先,您不必為每個可能的動態內容使用AJAX,尤其是在評論的情況下,您也可以通過iframe加載它們。 這樣,您不依賴於Javascript來發出請求。 它甚至可能適用於櫃台。

但是,根據我在圖表中看到的內容,您的問題不是Javascript,也不是數據庫服務器。 在我看來,你有一些沉重的PHP控制器,也許你正在加載一個繁重的框架只是為了檢查$session->id

此外,“我們跟蹤每一個動作”是什么意思? 你如何追蹤它們? 你是從每一個小東西發送一個AJAX請求還是你用JS去掉它們,並且每隔30秒左右只發送一個?

我的建議是你考慮你正在調用的PHP代碼的大小,並盡可能地減少它,如果看起來可行,甚至為零(通過利用localStorage在第一次登錄后跟蹤你的用戶會話),並且可能以其他方式加載計數器和評論。

例如,我推斷您只是在每頁加載時檢查一次計數器,忽略當前用戶正在閱讀文章時其他用戶的后續加載,因此您的計數器可能會在一段時間內過時,具體取決於您的交通。

我將更好地解釋它:你的頁面有n個視圖,所以當我加載它時,你請求n然后向我顯示n + 1 在我閱讀時,其他用戶會請求並查看同一頁面x次。 您在服務器上的計數器肯定已更新為n + x ,但我頁面上的計數器仍然顯示“n views” 那么,挑剔並向我展示n + 1並且沒有更新它有什么意義,因此被x關閉?

所以,首先計數器控制器應該盡可能的纖薄,如果你在iframe中加載它,如果沒有AJAX自動更新怎么辦?

如何使用javascript刷新iframe?

這將使計數器保持最新狀態,您可以在每個頁面視圖中使用PHP渲染一次,然后靜態地提供生成的HTML文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM