𝗖𝗮𝗰𝗵𝗶𝗻𝗴 𝗦𝗵𝗼𝗽𝗶𝗳𝘆 𝗚𝗥𝗔𝗣𝗛𝗤𝗟: 𝗔 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗮𝗹 𝗚𝘂𝗶𝗱𝗲

GraphQL, REST ನಂತೆ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ. ನೀವು URL ಮೂಲಕ ಕ್ಯಾಶ್ ಮಾಡಲಾರರು. REST ನಲ್ಲಿ, ಒಂದು ಎಂಡ್‌ಪಾಯಿಂಟ್ ಒಂದು ಕ್ಯಾಶ್ ಎಂಟ್ರಿಗೆ ಸಮಾನವಾಗಿರುತ್ತದೆ. GraphQL ನಲ್ಲಿ, ಒಂದು ಎಂಡ್‌ಪಾಯಿಂಟ್ ಎಲ್ಲವನ್ನೂ ನಿರ್ವಹಿಸುತ್ತದೆ. ಒಂದೇ URL ಗೆ ಮಾಡುವ ಎರಡು ವಿನಂತಿಗಳು (requests) ವಿಭಿನ್ನ ಡೇಟಾವನ್ನು ನೀಡಬಹುದು.

GraphQL ಅನ್ನು ಸರಿಯಾಗಿ ಕ್ಯಾಶ್ ಮಾಡಲು, ನಿಮ್ಮ ಕ್ಯಾಶ್ ಕೀ (cache key) ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒಳಗೊಂಡಿರಬೇಕು:

  • ಕ್ವೇರಿ (The query)
  • ವೇರಿಯೇಬಲ್‌ಗಳು (The variables)
  • ಬಳಕೆದಾರರ ಸಂದರ್ಭ (locale ಅಥವಾ ಬೈಯರ್ ಸೆಗ್ಮೆಂಟ್)

ವೇಗವಾದ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಲು ಪದರಗಳನ್ನು (layers) ಬಳಸಿ:

  • ಕ್ಲೈಂಟ್ ಕ್ಯಾಶ್ (Client cache): ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಸೆಷನ್ ಮರುಬಳಕೆಗಾಗಿ.
  • ಎಡ್ಜ್ ಕ್ಯಾಶ್ (Edge cache): ಸಾರ್ವಜನಿಕ ಸ್ಟೋರ್‌ಫ್ರಂಟ್ ಪುಟಗಳಿಗಾಗಿ.
  • ಆಪ್ ಕ್ಯಾಶ್ (App cache): ನಿಮ್ಮ ಸರ್ವರ್‌ನಲ್ಲಿರುವ ಹಂಚಿಕೆಯ ಡೇಟಾಕ್ಕಾಗಿ.
  • ಪರ್ಸಿಸ್ಟೆಡ್ ಕ್ವೇರಿಗಳು (Persisted queries): ಸ್ಥಿರವಾದ, ಹ್ಯಾಶ್-ಆಧಾರಿತ ಕೀಗಳಿಗಾಗಿ.

ಡೇಟಾ ಎಷ್ಟು ವೇಗವಾಗಿ ಬದಲಾಗುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ನಿಮ್ಮ ಕ್ಯಾಶ್ ಸಮಯವನ್ನು ಹೊಂದಿಸಿ.

ಈ ಐಟಂಗಳನ್ನು ದೀರ್ಘಕಾಲದವರೆಗೆ ಕ್ಯಾಶ್ ಮಾಡಿ:

  • ಉತ್ಪನ್ನದ ವಿವರಗಳು (Product details)
  • ಕಲೆಕ್ಷನ್‌ಗಳು (Collections)
  • ಶಾಪ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು (Shop settings)

ಈ ಐಟಂಗಳನ್ನು ಅಲ್ಪಾವಧಿಯವರೆಗೆ ಕ್ಯಾಶ್ ಮಾಡಿ:

  • ಬೆಲೆಗಳು (Pricing)
  • ಇನ್ವೆಂಟರಿ ಲಭ್ಯತೆ (Inventory availability)

ಈ ಐಟಂಗಳನ್ನು ಎಂದಿಗೂ ಕ್ಯಾಶ್ ಮಾಡಬೇಡಿ:

  • ಕಾರ್ಟ್‌ಗಳು (Carts)
  • ಚೆಕ್‌ಔಟ್ ಪ್ರಕ್ರಿಯೆಗಳು (Checkout processes)
  • ಗ್ರಾಹಕ-ನಿರ್ದಿಷ್ಟ ಬೆಲೆಗಳು (Customer-specific pricing)

ನೀವು B2B ಸ್ಟೋರ್‌ಗಳಿಗೆ ಸೇವೆ ನೀಡುತ್ತಿದ್ದರೆ, ನಿಮ್ಮ ಕ್ಯಾಶ್ ಕೀಯಲ್ಲಿ ಕಂಪನಿ ID ಅನ್ನು অবশ্যই ಸೇರಿಸಬೇಕು. ನೀವು ಇದನ್ನು ಮಾಡಲು ವಿಫಲವಾದರೆ, ಗ್ರಾಹಕ A ಅವರು ಗ್ರಾಹಕ B ಅವರ ಒಪ್ಪಂದದ ಬೆಲೆಯನ್ನು ನೋಡಬಹುದು.

ಫ್ರೆಶ್‌ನೆಸ್ (freshness) ನಿರ್ವಹಿಸಲು ಈ ಮೂರು ವಿಧಾನಗಳನ್ನು ಬಳಸಿ:

  1. TTL (ಸಮಯ-ಆಧಾರಿತ): ಅವಧಿ ಮುಕ್ತಾಯದ ಸಮಯವನ್ನು (expiration time) ನಿಗದಿಪಡಿಸಿ. ಇದು ಸರಳವಾಗಿದೆ ಆದರೆ ನೀವು ಹೆಚ್ಚಾಗಿ ಊಹಿಸಬೇಕಾಗುತ್ತದೆ.
  2. Webhooks (ಘಟನೆ-ಆಧಾರಿತ): ಇದು ಅತ್ಯಂತ ನಿಖರವಾದದ್ದು. ಉತ್ಪನ್ನವು ಅಪ್‌ಡೇಟ್ ಆದಾಗ, Shopify ಒಂದು webhook ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ನಿಮ್ಮ ಹಳೆಯ ಕ್ಯಾಶ್ ಎಂಟ್ರಿಯನ್ನು ಡಿಲೀಟ್ ಮಾಡಲು ಆ webhook ಅನ್ನು ಬಳಸಿ.
  3. Stale-while-revalidate: ಹಿನ್ನೆಲೆಯಲ್ಲಿ (background) ಕ್ಯಾಶ್ ಅನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡುವಾಗ ಹಳೆಯ ಡೇಟಾವನ್ನು ತಕ್ಷಣವೇ ಒದಗಿಸಿ.

ವಿಶ್ವಾಸಾರ್ಹ webhook ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಿ. ಒಂದು ವೇಳೆ webhook ವಿಫಲವಾದರೆ, ನಿಮ್ಮ ಕ್ಯಾಶ್ ಹಳೆಯದಾಗಿಯೇ (stale) ಉಳಿಯುತ್ತದೆ. ಇದನ್ನು ತಡೆಯಲು ರಿಟ್ರೈಸ್ (retries) ಬಳಸಿ.

ನಿಮ್ಮ ಕಾರ್ಯತಂತ್ರವು ಕೆಲಸ ಮಾಡುತ್ತಿದೆಯೇ ಎಂದು ನೋಡಲು ಈ ಮೆಟ್ರಿಕ್‌ಗಳ ಮೇಲೆ ಗಮನಹರಿಸಿ:

  • ಹಿಟ್ ರೇಶಿಯೊ (Hit ratio): ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಹಿಟ್‌ಗಳಿಗಾಗಿ ಗುರಿ ಇರಿಸಿ.
  • લેಟೆನ್ಸಿ (Latency): ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆ ಸಮಯವು ಕಡಿಮೆಯಾಗಬೇಕು.
  • ತಪ್ಪಿಸಲ್ಪಟ್ಟ API ಕರೆಗಳು (API calls avoided): ಹೆಚ್ಚಿನ ಹಿಟ್‌ಗಳು ಎಂದರೆ ಕಡಿಮೆ ವೆಚ್ಚ ಎಂದರ್ಥ.
  • ಹಳೆಯ ಡೇಟಾ ಘಟನೆಗಳು (Stale incidents): ತಪ್ಪು ಬೆಲೆಗಳು ಅಥವಾ ಸ್ಟಾಕ್ ವರದಿಗಳು ಶೂನ್ಯವಾಗಿರಬೇಕೆಂಬುದು ನಿಮ್ಮ ಗುರಿಯಾಗಲಿ.

ನಿಮ್ಮ ಕ್ಯಾಶ್‌ಗಳನ್ನು ಪದರಗಳಾಗಿ ವಿಂಗಡಿಸಿ. ಡೇಟಾದ ಅಸ್ಥಿರತೆಗೆ (volatility) ಅನುಗುಣವಾಗಿ ಅವಧಿ ಮುಕ್ತಾಯದ ಸಮಯವನ್ನು ಹೊಂದಿಸಿ. ಹಳೆಯ ಡೇಟಾವನ್ನು ಅಳಿಸಲು webhooks ಬಳಸಿ. ವೈಯಕ್ತೀಕರಣವನ್ನು (personalization) ಗೌರವಿಸುವ ಕೀಗಳನ್ನು ನಿರ್ಮಿಸಿ.

Source: https://dev.to/masadashraf/caching-shopify-graphql-a-practical-guide-for-developers-33k8